[webbeans-commits] Webbeans SVN: r293 - in ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans: bean/proxy and 1 other directories.

webbeans-commits at lists.jboss.org webbeans-commits at lists.jboss.org
Wed Nov 12 09:21:14 EST 2008


Author: nickarls
Date: 2008-11-12 09:21:14 -0500 (Wed, 12 Nov 2008)
New Revision: 293

Added:
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/proxy/
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/proxy/ClientProxy.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/proxy/ProxyMethodHandler.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/proxy/ProxyPool.java
Removed:
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/ClientProxy.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/ProxyMethodHandler.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/ProxyPool.java
Log:
Minor. Moved proxy stuff to own package.

Copied: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/proxy/ClientProxy.java (from rev 292, ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/ClientProxy.java)
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/proxy/ClientProxy.java	                        (rev 0)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/proxy/ClientProxy.java	2008-11-12 14:21:14 UTC (rev 293)
@@ -0,0 +1,40 @@
+package org.jboss.webbeans.bean.proxy;
+
+import org.jboss.webbeans.util.Reflections;
+
+
+
+public class ClientProxy
+{
+   
+   public static boolean isProxyable(Class<?> rawType)
+   {
+      // TODO Add logging
+      
+      if (Reflections.getConstructor(rawType) == null)
+      {
+         return false;
+      }
+      else if (Reflections.isTypeOrAnyMethodFinal(rawType))
+      {
+         return false;
+      }
+      else if (Reflections.isPrimitive(rawType))
+      {
+         return false;
+      }
+      else if (Reflections.isArrayType(rawType))
+      {
+         return false;
+      }
+      else
+      {
+         return true;
+      }
+   }
+   
+   public static boolean isProxy(Object instance) {
+      return instance.getClass().getName().indexOf("_$$_javassist_") > 0;
+   }   
+   
+}

Copied: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/proxy/ProxyMethodHandler.java (from rev 292, ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/ProxyMethodHandler.java)
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/proxy/ProxyMethodHandler.java	                        (rev 0)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/proxy/ProxyMethodHandler.java	2008-11-12 14:21:14 UTC (rev 293)
@@ -0,0 +1,44 @@
+package org.jboss.webbeans.bean.proxy;
+
+import java.io.Serializable;
+import java.lang.reflect.Method;
+
+import javassist.util.proxy.MethodHandler;
+
+import javax.webbeans.manager.Bean;
+import javax.webbeans.manager.Context;
+
+import org.jboss.webbeans.ManagerImpl;
+import org.jboss.webbeans.util.Reflections;
+
+public class ProxyMethodHandler implements MethodHandler, Serializable
+{
+   private static final long serialVersionUID = -5391564935097267888L;
+
+   private transient Bean<?> bean;
+   private int beanIndex;
+   private static ManagerImpl manager;
+
+   public ProxyMethodHandler(Bean<?> bean, int beanIndex, ManagerImpl manager)
+   {
+      this.bean = bean;
+      this.beanIndex = beanIndex;
+      ProxyMethodHandler.manager = manager;
+   }
+
+   public Object invoke(Object self, Method method, Method proceed,
+         Object[] args) throws Throwable
+   {
+      if (bean == null)
+      {
+         bean = manager.getBeans().get(beanIndex);
+      }
+      Context context = manager.getContext(bean.getScopeType());
+      Object proxiedInstance = context.get(bean, true);
+      Method proxiedMethod = Reflections.lookupMethod(method, proxiedInstance);
+      return proxiedMethod.invoke(proxiedInstance, args);
+   }
+
+
+
+}


Property changes on: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/proxy/ProxyMethodHandler.java
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/proxy/ProxyPool.java (from rev 292, ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/ProxyPool.java)
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/proxy/ProxyPool.java	                        (rev 0)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/proxy/ProxyPool.java	2008-11-12 14:21:14 UTC (rev 293)
@@ -0,0 +1,112 @@
+package org.jboss.webbeans.bean.proxy;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+
+import javassist.util.proxy.ProxyFactory;
+import javassist.util.proxy.ProxyObject;
+
+import javax.webbeans.UnproxyableDependencyException;
+import javax.webbeans.manager.Bean;
+
+import org.jboss.webbeans.ManagerImpl;
+
+import com.google.common.collect.ForwardingMap;
+
+public class ProxyPool
+{
+   private class Pool extends ForwardingMap<Bean<?>, Object>
+   {
+      
+      Map<Bean<?>, Object> delegate;
+      
+      public Pool()
+      {
+         delegate = new ConcurrentHashMap<Bean<?>, Object>();
+      }
+
+      public <T> T get(Bean<T> key)
+      {
+         return (T) super.get(key);
+      }
+      
+      @Override
+      protected Map<Bean<?>, Object> delegate()
+      {
+         return delegate;
+      }
+      
+   }
+   
+   private ManagerImpl manager;
+   private Pool pool;
+   
+   public ProxyPool(ManagerImpl manager) {
+      this.manager = manager;
+      this.pool = new Pool();
+   }
+        
+   private class TypeInfo {
+      Class<?>[] interfaces;
+      Class<?> superclass;
+   }
+   
+   private TypeInfo getTypeInfo(Set<Class<?>> types) {
+      TypeInfo typeInfo = new TypeInfo();
+      List<Class<?>> interfaces = new ArrayList<Class<?>>();
+      Class<?> superclass = null;
+      for (Class<?> type : types) {
+         if (type.isInterface()) {
+            interfaces.add(type);
+         } else if (superclass == null || (type != Object.class && superclass.isAssignableFrom(type))) {
+            superclass = type;
+         }
+      }
+      interfaces.add(Serializable.class);
+      typeInfo.interfaces = interfaces.toArray(new Class<?>[0]);
+      typeInfo.superclass = superclass;
+      return typeInfo;
+   }
+   
+   private <T> T createClientProxy(Bean<T> bean, int beanIndex) throws InstantiationException, IllegalAccessException {
+      ProxyFactory proxyFactory = new ProxyFactory();
+      TypeInfo typeInfo = getTypeInfo(bean.getTypes());
+      proxyFactory.setInterfaces(typeInfo.interfaces);
+      proxyFactory.setSuperclass(typeInfo.superclass);
+      T clientProxy = (T) proxyFactory.createClass().newInstance();
+      ProxyMethodHandler proxyMethodHandler = new ProxyMethodHandler(bean, beanIndex, manager);
+      ((ProxyObject)clientProxy).setHandler(proxyMethodHandler);
+      return clientProxy;
+   }
+
+   public Object getClientProxy(Bean<?> bean)
+   {
+      Object clientProxy = pool.get(bean);
+      if (clientProxy == null)
+      {
+         try
+         {
+            int beanIndex = manager.getBeans().indexOf(bean);
+            // Implicit add required since it is looked up on activation with then index
+            if (beanIndex < 0) {
+               manager.addBean(bean);
+               beanIndex = manager.getBeans().size() - 1;
+            }
+            clientProxy = createClientProxy(bean, beanIndex);
+         }
+         catch (Exception e)
+         {
+            // TODO: What to *really* do here?
+            throw new UnproxyableDependencyException("Could not create client proxy for " + bean.getName(), e);
+         }
+         pool.put(bean, clientProxy);
+      }
+      return clientProxy;
+   }
+   
+   
+}

Deleted: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/ClientProxy.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/ClientProxy.java	2008-11-12 10:25:43 UTC (rev 292)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/ClientProxy.java	2008-11-12 14:21:14 UTC (rev 293)
@@ -1,38 +0,0 @@
-package org.jboss.webbeans.util;
-
-
-
-public class ClientProxy
-{
-   
-   public static boolean isProxyable(Class<?> rawType)
-   {
-      // TODO Add logging
-      
-      if (Reflections.getConstructor(rawType) == null)
-      {
-         return false;
-      }
-      else if (Reflections.isTypeOrAnyMethodFinal(rawType))
-      {
-         return false;
-      }
-      else if (Reflections.isPrimitive(rawType))
-      {
-         return false;
-      }
-      else if (Reflections.isArrayType(rawType))
-      {
-         return false;
-      }
-      else
-      {
-         return true;
-      }
-   }
-   
-   public static boolean isProxy(Object instance) {
-      return instance.getClass().getName().indexOf("_$$_javassist_") > 0;
-   }   
-   
-}

Deleted: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/ProxyMethodHandler.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/ProxyMethodHandler.java	2008-11-12 10:25:43 UTC (rev 292)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/ProxyMethodHandler.java	2008-11-12 14:21:14 UTC (rev 293)
@@ -1,43 +0,0 @@
-package org.jboss.webbeans.util;
-
-import java.io.Serializable;
-import java.lang.reflect.Method;
-
-import javassist.util.proxy.MethodHandler;
-
-import javax.webbeans.manager.Bean;
-import javax.webbeans.manager.Context;
-
-import org.jboss.webbeans.ManagerImpl;
-
-public class ProxyMethodHandler implements MethodHandler, Serializable
-{
-   private static final long serialVersionUID = -5391564935097267888L;
-
-   private transient Bean<?> bean;
-   private int beanIndex;
-   private static ManagerImpl manager;
-
-   public ProxyMethodHandler(Bean<?> bean, int beanIndex, ManagerImpl manager)
-   {
-      this.bean = bean;
-      this.beanIndex = beanIndex;
-      ProxyMethodHandler.manager = manager;
-   }
-
-   public Object invoke(Object self, Method method, Method proceed,
-         Object[] args) throws Throwable
-   {
-      if (bean == null)
-      {
-         bean = manager.getBeans().get(beanIndex);
-      }
-      Context context = manager.getContext(bean.getScopeType());
-      Object proxiedInstance = context.get(bean, true);
-      Method proxiedMethod = Reflections.lookupMethod(method, proxiedInstance);
-      return proxiedMethod.invoke(proxiedInstance, args);
-   }
-
-
-
-}

Deleted: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/ProxyPool.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/ProxyPool.java	2008-11-12 10:25:43 UTC (rev 292)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/ProxyPool.java	2008-11-12 14:21:14 UTC (rev 293)
@@ -1,112 +0,0 @@
-package org.jboss.webbeans.util;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-
-import javassist.util.proxy.ProxyFactory;
-import javassist.util.proxy.ProxyObject;
-
-import javax.webbeans.UnproxyableDependencyException;
-import javax.webbeans.manager.Bean;
-
-import org.jboss.webbeans.ManagerImpl;
-
-import com.google.common.collect.ForwardingMap;
-
-public class ProxyPool
-{
-   private class Pool extends ForwardingMap<Bean<?>, Object>
-   {
-      
-      Map<Bean<?>, Object> delegate;
-      
-      public Pool()
-      {
-         delegate = new ConcurrentHashMap<Bean<?>, Object>();
-      }
-
-      public <T> T get(Bean<T> key)
-      {
-         return (T) super.get(key);
-      }
-      
-      @Override
-      protected Map<Bean<?>, Object> delegate()
-      {
-         return delegate;
-      }
-      
-   }
-   
-   private ManagerImpl manager;
-   private Pool pool;
-   
-   public ProxyPool(ManagerImpl manager) {
-      this.manager = manager;
-      this.pool = new Pool();
-   }
-        
-   private class TypeInfo {
-      Class<?>[] interfaces;
-      Class<?> superclass;
-   }
-   
-   private TypeInfo getTypeInfo(Set<Class<?>> types) {
-      TypeInfo typeInfo = new TypeInfo();
-      List<Class<?>> interfaces = new ArrayList<Class<?>>();
-      Class<?> superclass = null;
-      for (Class<?> type : types) {
-         if (type.isInterface()) {
-            interfaces.add(type);
-         } else if (superclass == null || (type != Object.class && superclass.isAssignableFrom(type))) {
-            superclass = type;
-         }
-      }
-      interfaces.add(Serializable.class);
-      typeInfo.interfaces = interfaces.toArray(new Class<?>[0]);
-      typeInfo.superclass = superclass;
-      return typeInfo;
-   }
-   
-   private <T> T createClientProxy(Bean<T> bean, int beanIndex) throws InstantiationException, IllegalAccessException {
-      ProxyFactory proxyFactory = new ProxyFactory();
-      TypeInfo typeInfo = getTypeInfo(bean.getTypes());
-      proxyFactory.setInterfaces(typeInfo.interfaces);
-      proxyFactory.setSuperclass(typeInfo.superclass);
-      T clientProxy = (T) proxyFactory.createClass().newInstance();
-      ProxyMethodHandler proxyMethodHandler = new ProxyMethodHandler(bean, beanIndex, manager);
-      ((ProxyObject)clientProxy).setHandler(proxyMethodHandler);
-      return clientProxy;
-   }
-
-   public Object getClientProxy(Bean<?> bean)
-   {
-      Object clientProxy = pool.get(bean);
-      if (clientProxy == null)
-      {
-         try
-         {
-            int beanIndex = manager.getBeans().indexOf(bean);
-            // Implicit add required since it is looked up on activation with then index
-            if (beanIndex < 0) {
-               manager.addBean(bean);
-               beanIndex = manager.getBeans().size() - 1;
-            }
-            clientProxy = createClientProxy(bean, beanIndex);
-         }
-         catch (Exception e)
-         {
-            // TODO: What to *really* do here?
-            throw new UnproxyableDependencyException("Could not create client proxy for " + bean.getName(), e);
-         }
-         pool.put(bean, clientProxy);
-      }
-      return clientProxy;
-   }
-   
-   
-}




More information about the weld-commits mailing list