You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by ge...@apache.org on 2008/12/28 22:58:45 UTC

svn commit: r729783 - in /incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans: component/ config/ container/ decorator/ inject/ inject/xml/ intercept/ proxy/ util/

Author: gerdogdu
Date: Sun Dec 28 13:58:44 2008
New Revision: 729783

URL: http://svn.apache.org/viewvc?rev=729783&view=rev
Log:
Arranging and testing for M1 Release.

Modified:
    incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractComponent.java
    incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansContainerDeployer.java
    incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/ManagerImpl.java
    incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/WebBeansDecorator.java
    incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/WebBeansDecoratorConfig.java
    incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/InjectableConstructor.java
    incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/xml/XMLInjectableConstructor.java
    incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorDataImpl.java
    incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorHandler.java
    incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/JavassistProxyFactory.java
    incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java

Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractComponent.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractComponent.java?rev=729783&r1=729782&r2=729783&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractComponent.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractComponent.java Sun Dec 28 13:58:44 2008
@@ -18,7 +18,6 @@
 
 import java.lang.annotation.Annotation;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
@@ -34,8 +33,6 @@
 import org.apache.webbeans.context.DependentContext;
 import org.apache.webbeans.deployment.DeploymentTypeManager;
 import org.apache.webbeans.intercept.InterceptorData;
-import org.apache.webbeans.intercept.InterceptorDataComparator;
-import org.apache.webbeans.intercept.InterceptorDataImpl;
 
 /**
  * 
@@ -436,18 +433,18 @@
 	 * @see org.apache.webbeans.component.Component#setNullable()
 	 */
 	@Override
-	public void setNullable(boolean serializable)
+	public void setNullable(boolean nullable)
 	{
-		this.serializable = serializable;
+		this.nullable = nullable;
 	}
 
 	/* (non-Javadoc)
 	 * @see org.apache.webbeans.component.Component#setSerializable()
 	 */
 	@Override
-	public void setSerializable(boolean nullable)
+	public void setSerializable(boolean serializable)
 	{
-		this.nullable = nullable;
+		this.serializable = serializable;
 		
 	}
 

Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansContainerDeployer.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansContainerDeployer.java?rev=729783&r1=729782&r2=729783&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansContainerDeployer.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansContainerDeployer.java Sun Dec 28 13:58:44 2008
@@ -29,7 +29,6 @@
 import javax.webbeans.Interceptor;
 import javax.webbeans.ScopeType;
 import javax.webbeans.Specializes;
-import javax.webbeans.Stereotype;
 import javax.webbeans.manager.Bean;
 
 import org.apache.webbeans.WebBeansConstants;

Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/ManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/ManagerImpl.java?rev=729783&r1=729782&r2=729783&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/ManagerImpl.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/ManagerImpl.java Sun Dec 28 13:58:44 2008
@@ -21,6 +21,7 @@
 import java.lang.reflect.Type;
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.IdentityHashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -56,6 +57,7 @@
 import org.apache.webbeans.intercept.InterceptorComparator;
 import org.apache.webbeans.intercept.WebBeansInterceptorConfig;
 import org.apache.webbeans.intercept.webbeans.WebBeansInterceptor;
+import org.apache.webbeans.proxy.JavassistProxyFactory;
 import org.apache.webbeans.util.Asserts;
 import org.apache.webbeans.util.ClassUtil;
 import org.apache.webbeans.util.WebBeansUtil;
@@ -85,6 +87,7 @@
 	
 	private InjectionResolver injectionResolver = null;
 	
+	private Map<Bean<?>, Object> proxyMap = Collections.synchronizedMap(new IdentityHashMap<Bean<?>, Object>());
 	
 	public ManagerImpl()
 	{		
@@ -258,9 +261,26 @@
 				isSetOnThis = true;
 			}
 			
-			context = getContext(bean.getScopeType());
-			instance = context.get(bean, true);
+			if(!bean.getScopeType().equals(Dependent.class))
+			{
+				if(this.proxyMap.containsKey(bean))
+				{
+					instance = (T)this.proxyMap.get(bean);
+				}
+				else
+				{
+					instance =(T) JavassistProxyFactory.createNewProxyInstance(bean);
+					
+					this.proxyMap.put(bean, instance);
+				}
+			}
 			
+			else
+			{
+				context = getContext(bean.getScopeType());
+				instance = context.get(bean, true);					
+			}
+						
 		}finally
 		{
 			if(isSetOnThis)

Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/WebBeansDecorator.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/WebBeansDecorator.java?rev=729783&r1=729782&r2=729783&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/WebBeansDecorator.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/WebBeansDecorator.java Sun Dec 28 13:58:44 2008
@@ -233,6 +233,15 @@
 	
 
 	/**
+	 * @return the delegateComponent
+	 */
+	public AbstractComponent<Object> getDelegateComponent()
+	{
+		return delegateComponent;
+	}
+
+
+	/**
 	 * @return the clazz
 	 */
 	public Class<?> getClazz()

Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/WebBeansDecoratorConfig.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/WebBeansDecoratorConfig.java?rev=729783&r1=729782&r2=729783&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/WebBeansDecoratorConfig.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/WebBeansDecoratorConfig.java Sun Dec 28 13:58:44 2008
@@ -76,15 +76,13 @@
 		
 		while(itList.hasNext())
 		{
-			Decorator decorator = itList.next();
+			WebBeansDecorator decorator = (WebBeansDecorator)itList.next();
+			
 			Object decoratorInstance = ManagerImpl.getManager().getInstance(decorator);
-
 			decorator.setDelegate(decoratorInstance, instance);
 		
 			component.getDecoratorStack().add(decoratorInstance);			
 		}
-		
-		
 	}
 	
 	private static Set<Decorator> getWebBeansDecorators()

Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/InjectableConstructor.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/InjectableConstructor.java?rev=729783&r1=729782&r2=729783&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/InjectableConstructor.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/InjectableConstructor.java Sun Dec 28 13:58:44 2008
@@ -23,14 +23,11 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.webbeans.Dependent;
-
 import org.apache.webbeans.annotation.CurrentLiteral;
 import org.apache.webbeans.component.AbstractComponent;
 import org.apache.webbeans.component.ComponentImpl;
 import org.apache.webbeans.ejb.EJBUtil;
 import org.apache.webbeans.exception.WebBeansException;
-import org.apache.webbeans.proxy.JavassistProxyFactory;
 import org.apache.webbeans.util.AnnotationUtil;
 
 /**
@@ -111,14 +108,7 @@
 		{
 			if (!EJBUtil.isEJBSessionClass(con.getDeclaringClass()))
 			{
-				if(getInjectionOwnerComponent().getScopeType().equals(Dependent.class))
-				{
-					instance = con.newInstance(list.toArray());
-				}
-				else
-				{
-					instance = (T) JavassistProxyFactory.createNewProxyInstance(con.getDeclaringClass(), con.getParameterTypes(), list.toArray(), getInjectionOwnerComponent());					
-				}				
+				instance = con.newInstance(list.toArray());
 			}
 
 		} catch (Exception e)

Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/xml/XMLInjectableConstructor.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/xml/XMLInjectableConstructor.java?rev=729783&r1=729782&r2=729783&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/xml/XMLInjectableConstructor.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/xml/XMLInjectableConstructor.java Sun Dec 28 13:58:44 2008
@@ -22,13 +22,10 @@
 import java.util.Iterator;
 import java.util.List;
 
-import javax.webbeans.Dependent;
-
 import org.apache.webbeans.component.AbstractComponent;
 import org.apache.webbeans.ejb.EJBUtil;
 import org.apache.webbeans.exception.WebBeansException;
 import org.apache.webbeans.inject.InjectableConstructor;
-import org.apache.webbeans.proxy.JavassistProxyFactory;
 import org.apache.webbeans.util.Asserts;
 
 public class XMLInjectableConstructor<T> extends InjectableConstructor<T>
@@ -68,14 +65,16 @@
 		{
 			if (!EJBUtil.isEJBSessionClass(con.getDeclaringClass()))
 			{
-				if(getInjectionOwnerComponent().getScopeType().equals(Dependent.class))
-				{
-					instance = con.newInstance(list.toArray());
-				}
-				else
-				{
-					instance = (T) JavassistProxyFactory.createNewProxyInstance(con.getDeclaringClass(), con.getParameterTypes(), list.toArray(), getInjectionOwnerComponent());					
-				}				
+				instance = con.newInstance(list.toArray());
+				
+//				if(getInjectionOwnerComponent().getScopeType().equals(Dependent.class))
+//				{
+//					
+//				}
+//				else
+//				{
+//					instance = (T) JavassistProxyFactory.createNewProxyInstance(con.getDeclaringClass(), con.getParameterTypes(), list.toArray(), getInjectionOwnerComponent());					
+//				}				
 			}
 
 		} catch (Throwable e)

Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorDataImpl.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorDataImpl.java?rev=729783&r1=729782&r2=729783&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorDataImpl.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorDataImpl.java Sun Dec 28 13:58:44 2008
@@ -18,15 +18,12 @@
 
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Method;
-import java.util.Comparator;
 
 import javax.annotation.PostConstruct;
 import javax.annotation.PreDestroy;
 import javax.interceptor.AroundInvoke;
 import javax.webbeans.manager.Interceptor;
 
-import org.apache.webbeans.intercept.webbeans.WebBeansInterceptor;
-
 /**
  * Abstract implementation of the {@link InterceptorData} api
  * contract.

Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorHandler.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorHandler.java?rev=729783&r1=729782&r2=729783&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorHandler.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorHandler.java Sun Dec 28 13:58:44 2008
@@ -24,8 +24,10 @@
 
 import javax.interceptor.ExcludeClassInterceptors;
 import javax.interceptor.Interceptors;
+import javax.webbeans.manager.Context;
 
 import org.apache.webbeans.component.AbstractComponent;
+import org.apache.webbeans.container.ManagerImpl;
 import org.apache.webbeans.exception.WebBeansException;
 import org.apache.webbeans.logger.WebBeansLogger;
 import org.apache.webbeans.util.AnnotationUtil;
@@ -51,6 +53,9 @@
 	
 	public Object invoke(Object instance, Method method, Method proceed, Object[] arguments) throws Throwable
 	{
+		Context webbeansContext = ManagerImpl.getManager().getContext(component.getScopeType());
+		Object webbeansInstance = webbeansContext.get(this.component, true);
+		
 		if(!ClassUtil.isObjectMethod(method.getName()) && InterceptorUtil.isWebBeansBusinessMethod(method))
 		{
 			if(this.calledMethod == null)
@@ -67,7 +72,6 @@
 				this.isSameDecMethod = false;
 			}
 			
-			
 			//Run around invoke chain
 			List<InterceptorData> stack = component.getInterceptorStack();
 			
@@ -86,7 +90,7 @@
 			
 		}
 		
-		return proceed.invoke(instance, arguments);
+		return method.invoke(webbeansInstance, arguments);
 	}
 	
 	private void callDecorators(List<Object> decorators, Method method, Object[] arguments)

Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/JavassistProxyFactory.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/JavassistProxyFactory.java?rev=729783&r1=729782&r2=729783&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/JavassistProxyFactory.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/JavassistProxyFactory.java Sun Dec 28 13:58:44 2008
@@ -18,15 +18,19 @@
 
 import java.io.Serializable;
 import java.lang.annotation.Annotation;
-import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+import javax.webbeans.manager.Bean;
 
 import org.apache.webbeans.annotation.WebBeansAnnotation;
 import org.apache.webbeans.component.AbstractComponent;
+import org.apache.webbeans.decorator.WebBeansDecorator;
 import org.apache.webbeans.exception.WebBeansException;
 import org.apache.webbeans.intercept.InterceptorHandler;
-import org.apache.webbeans.util.ClassUtil;
+import org.apache.webbeans.intercept.webbeans.WebBeansInterceptor;
 
-import javassist.util.proxy.MethodFilter;
 import javassist.util.proxy.ProxyFactory;
 
 public final class JavassistProxyFactory
@@ -37,27 +41,44 @@
 	}
 	
 	
-	public static Object createNewProxyInstance(Class<?> superClazz, Class<?>[] paramTypes, Object[] args, AbstractComponent<?> component)
+	public static <T> Object createNewProxyInstance(Bean<T> bean)
 	{
 		Object result = null;
 		try
 		{
-			ProxyFactory fact = new ProxyFactory();
-			fact.setInterfaces(new Class[]{Serializable.class});
-			fact.setSuperclass(superClazz);
-			fact.setHandler(new InterceptorHandler(component));
-			fact.setFilter(new MethodFilter(){
-
-				public boolean isHandled(Method arg0)
+			Set<Class<?>> types = bean.getTypes();
+			List<Class<?>> interfaceList = new ArrayList<Class<?>>();
+			Class<?> superClass = null;
+			for(Class<?> type : types)
+			{
+				if(type.isInterface())
 				{
-					if(ClassUtil.isObjectMethod(arg0.getName()))
-						return false;
-					return true;
+					interfaceList.add(type);
 				}
+		        else if ((superClass == null) 
+		        		|| (superClass.isAssignableFrom(type) && type != Object.class ))
+		         {
+		        	superClass = type;
+		         }
 				
-			});
+			}
+			
+			interfaceList.add(Serializable.class);
+			
+			Class<?>[] interfaceArray = new Class<?>[interfaceList.size()];
+			interfaceArray = interfaceList.toArray(interfaceArray);
+			
+			ProxyFactory fact = new ProxyFactory();
+			fact.setInterfaces(interfaceArray);
+			fact.setSuperclass(superClass);
+			
+			if(!(bean instanceof WebBeansDecorator) && !(bean instanceof WebBeansInterceptor))
+			{
+				fact.setHandler(new InterceptorHandler((AbstractComponent<?>)bean));
+			}
+			
+			result = fact.createClass().newInstance();
 			
-			result = fact.create(paramTypes, args); 
 		}catch(Throwable e)
 		{
 			throw new WebBeansException(e);

Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java?rev=729783&r1=729782&r2=729783&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java Sun Dec 28 13:58:44 2008
@@ -533,7 +533,10 @@
 		Method[] methods = clazz.getMethods();
 		for (Method method : methods)
 		{
-			list.add(method.getName());
+			if(!method.getName().equals("toString"))
+			{
+				list.add(method.getName());	
+			}
 		}
 
 		return list;