From: Bill B. <pat...@us...> - 2003-03-17 02:20:32
|
User: patriot1burke Date: 03/03/16 18:20:32 Modified: src/main/org/jboss/aop/proxy ClassProxyFactory.java Log: fixed some bugs Revision Changes Path 1.2 +1 -2 jboss-aop/src/main/org/jboss/aop/proxy/ClassProxyFactory.java Index: ClassProxyFactory.java =================================================================== RCS file: /cvsroot/jboss/jboss-aop/src/main/org/jboss/aop/proxy/ClassProxyFactory.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- ClassProxyFactory.java 17 Mar 2003 01:28:36 -0000 1.1 +++ ClassProxyFactory.java 17 Mar 2003 02:20:32 -0000 1.2 @@ -28,7 +28,7 @@ /** * * @author <a href="mailto:bi...@jb...">Bill Burke</a> - * @version $Revision: 1.1 $ + * @version $Revision: 1.2 $ */ public class ClassProxyFactory { @@ -106,7 +106,6 @@ for (int i = 0; i < allMethods.size(); i++) { CtMethod m = (CtMethod)allMethods.get(i); - System.out.println("adding method: " + m.getName()); if (Modifier.isPublic(m.getModifiers()) && !Modifier.isStatic(m.getModifiers())) { |
From: Bill B. <pat...@us...> - 2003-04-18 04:28:57
|
User: patriot1burke Date: 03/04/17 21:28:57 Modified: src/main/org/jboss/aop/proxy ClassProxyFactory.java Log: a bunch of bug fixes Revision Changes Path 1.6 +38 -3 jboss-aop/src/main/org/jboss/aop/proxy/ClassProxyFactory.java Index: ClassProxyFactory.java =================================================================== RCS file: /cvsroot/jboss/jboss-aop/src/main/org/jboss/aop/proxy/ClassProxyFactory.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- ClassProxyFactory.java 1 Apr 2003 00:32:51 -0000 1.5 +++ ClassProxyFactory.java 18 Apr 2003 04:28:56 -0000 1.6 @@ -12,6 +12,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.WeakHashMap; +import java.util.HashSet; import javassist.ClassPool; import javassist.CtClass; @@ -32,7 +33,7 @@ /** * * @author <a href="mailto:bi...@jb...">Bill Burke</a> - * @version $Revision: 1.5 $ + * @version $Revision: 1.6 $ */ public class ClassProxyFactory { @@ -92,7 +93,7 @@ CtMethod setInstanceAdvisor = template.getDeclaredMethod("_setInstanceAdvisor"); CtMethod dynamicInvoke = template.getDeclaredMethod("_dynamicInvoke"); - CtClass proxy = pool.makeClass(clazz.getName() + "$proxy$aop", superclass); + CtClass proxy = pool.makeClass("org.jboss.aop.proxy$" + clazz.getName() , superclass); proxy.addInterface(pool.get("org.jboss.aop.proxy.ClassProxy")); proxy.addInterface(pool.get("java.io.Externalizable")); @@ -114,16 +115,21 @@ ArrayList allMethods = new ArrayList(); populateMethodTables(allMethods, superclass); - for (int i = 0; i < allMethods.size(); i++) + // go backwards so that we can flush out duplicate methods + HashSet visited = new HashSet(); + for (int i = allMethods.size() - 1; i >= 0; i--) { CtMethod m = (CtMethod)allMethods.get(i); if (Modifier.isPublic(m.getModifiers()) && !Modifier.isStatic(m.getModifiers())) { + String signature = toGenericString(m); + if (visited.contains(signature)) continue; CtMethod newMethod = CtNewMethod.wrapped(m.getReturnType(), m.getName(), m.getParameterTypes(), m.getExceptionTypes(), body, CtMethod.ConstParameter.integer(i), proxy); newMethod.setModifiers(m.getModifiers()); proxy.addMethod(newMethod); + visited.add(signature); } } @@ -181,4 +187,33 @@ return rtn; } + public static String toGenericString(CtMethod method) throws Exception + { + StringBuffer buf = new StringBuffer(); + buf.append(method.getName()); + buf.append("("); + buf.append(getSignature(method.getParameterTypes())); + buf.append(")"); + return buf.toString(); + } + + public static String getSignature(CtClass[] source) throws Exception + { + StringBuffer sig = new StringBuffer("("); + for( int i=0; i < source.length; i++ ) + { + String brackets = ""; + CtClass cls = source[i]; + while(cls.isArray()) + { + brackets += "[]"; + cls = cls.getComponentType(); + } + sig.append(cls.getName()); + sig.append(brackets); + sig.append(" "); + } + sig.append(")"); + return sig.toString(); + } } |
From: Bill B. <pat...@us...> - 2003-04-20 23:45:09
|
User: patriot1burke Date: 03/04/20 16:45:06 Modified: src/main/org/jboss/aop/proxy ClassProxyFactory.java Log: more hooks for Introductions Revision Changes Path 1.8 +2 -24 jboss-aop/src/main/org/jboss/aop/proxy/ClassProxyFactory.java Index: ClassProxyFactory.java =================================================================== RCS file: /cvsroot/jboss/jboss-aop/src/main/org/jboss/aop/proxy/ClassProxyFactory.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- ClassProxyFactory.java 20 Apr 2003 01:59:00 -0000 1.7 +++ ClassProxyFactory.java 20 Apr 2003 23:45:05 -0000 1.8 @@ -35,7 +35,7 @@ /** * * @author <a href="mailto:bi...@jb...">Bill Burke</a> - * @version $Revision: 1.7 $ + * @version $Revision: 1.8 $ */ public class ClassProxyFactory { @@ -114,10 +114,7 @@ - HashMap allMethods = new HashMap(); - populateMethodTables(allMethods, superclass); - - + HashMap allMethods = org.jboss.aop.MethodHashing.getMethodMap(superclass); Iterator it = allMethods.entrySet().iterator(); while (it.hasNext()) { @@ -134,25 +131,6 @@ } } return proxy.toClass(); - } - - private static void populateMethodTables(HashMap advised, CtClass superclass) - throws Exception - { - if (superclass == null) return; - if (superclass.getName().equals("java.lang.Object")) return; - - populateMethodTables(advised, superclass.getSuperclass()); - - CtMethod[] declaredMethods = superclass.getDeclaredMethods(); - for (int i = 0; i < declaredMethods.length; i++) - { - if (Instrumentor.isAdvisable(declaredMethods[i])) - { - long hash = org.jboss.aop.MethodHashing.methodHash(declaredMethods[i]); - advised.put(new Long(hash), declaredMethods[i]); - } - } } private static void populateMethodTables(HashMap advised, Class superclass) |
From: Bill B. <pat...@us...> - 2003-05-23 23:17:34
|
User: patriot1burke Date: 03/05/23 16:17:34 Modified: src/main/org/jboss/aop/proxy ClassProxyFactory.java Log: upgrade to javassist 2.5.1 Revision Changes Path 1.9 +2 -2 jboss-aop/src/main/org/jboss/aop/proxy/ClassProxyFactory.java Index: ClassProxyFactory.java =================================================================== RCS file: /cvsroot/jboss/jboss-aop/src/main/org/jboss/aop/proxy/ClassProxyFactory.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- ClassProxyFactory.java 20 Apr 2003 23:45:05 -0000 1.8 +++ ClassProxyFactory.java 23 May 2003 23:17:33 -0000 1.9 @@ -35,7 +35,7 @@ /** * * @author <a href="mailto:bi...@jb...">Bill Burke</a> - * @version $Revision: 1.8 $ + * @version $Revision: 1.9 $ */ public class ClassProxyFactory { @@ -125,7 +125,7 @@ && !Modifier.isStatic(m.getModifiers())) { CtMethod newMethod = CtNewMethod.wrapped(m.getReturnType(), m.getName(), m.getParameterTypes(), - m.getExceptionTypes(), body, CtMethod.ConstParameter.longConst(key.longValue()), proxy); + m.getExceptionTypes(), body, CtMethod.ConstParameter.integer(key.longValue()), proxy); newMethod.setModifiers(m.getModifiers()); proxy.addMethod(newMethod); } |
From: Bill B. <pat...@us...> - 2004-05-05 19:02:20
|
User: patriot1burke Date: 04/05/05 12:02:13 Modified: src/main/org/jboss/aop/proxy ClassProxyFactory.java Log: fixed bug when there is no method map Revision Changes Path 1.13 +15 -5 jboss-aop/src/main/org/jboss/aop/proxy/ClassProxyFactory.java Index: ClassProxyFactory.java =================================================================== RCS file: /cvsroot/jboss/jboss-aop/src/main/org/jboss/aop/proxy/ClassProxyFactory.java,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- ClassProxyFactory.java 14 Feb 2004 07:12:16 -0000 1.12 +++ ClassProxyFactory.java 5 May 2004 19:02:12 -0000 1.13 @@ -29,13 +29,10 @@ /** * * @author <a href="mailto:bi...@jb...">Bill Burke</a> - * @version $Revision: 1.12 $ + * @version $Revision: 1.13 $ */ public class ClassProxyFactory { - public static final String PROXY_CLASS = "PROXY_CLASS"; - public static final String PROXY_CLASSNAME = "PROXY_CLASSNAME"; - private static Object maplock = new Object(); private static WeakValueHashMap classnameMap = new WeakValueHashMap(); private static WeakHashMap proxyCache = new WeakHashMap(); @@ -60,7 +57,6 @@ } } ClassProxy proxy = (ClassProxy)proxyClass.newInstance(); - proxy._getInstanceAdvisor().getMetaData().addMetaData(PROXY_CLASS, PROXY_CLASSNAME, clazz.getName(), PayloadKey.AS_IS); return proxy; } @@ -75,6 +71,20 @@ } } + public static HashMap getMethodMap(Class clazz) + { + HashMap map = getMethodMap(clazz.getName()); + if (map != null) return map; + try + { + return methodMap(clazz); + } + catch (Exception e) + { + throw new RuntimeException(e); //To change body of catch statement use Options | File Templates. + } + } + private static Class generateProxy(Class clazz) throws Exception { ClassPool pool = AspectManager.instance().findClassPool(clazz.getClassLoader()); |
From: Bill B. <pat...@us...> - 2004-05-14 00:26:30
|
User: patriot1burke Date: 04/05/13 17:26:23 Modified: src/main/org/jboss/aop/proxy ClassProxyFactory.java Log: JoinPointMatcher Refactoring Expose more methods and such Revision Changes Path 1.14 +3 -3 jboss-aop/src/main/org/jboss/aop/proxy/ClassProxyFactory.java Index: ClassProxyFactory.java =================================================================== RCS file: /cvsroot/jboss/jboss-aop/src/main/org/jboss/aop/proxy/ClassProxyFactory.java,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- ClassProxyFactory.java 5 May 2004 19:02:12 -0000 1.13 +++ ClassProxyFactory.java 14 May 2004 00:26:23 -0000 1.14 @@ -29,7 +29,7 @@ /** * * @author <a href="mailto:bi...@jb...">Bill Burke</a> - * @version $Revision: 1.13 $ + * @version $Revision: 1.14 $ */ public class ClassProxyFactory { @@ -118,7 +118,7 @@ - HashMap allMethods = org.jboss.aop.util.MethodHashing.getMethodMap(superclass); + HashMap allMethods = org.jboss.aop.util.JavassistMethodHashing.getMethodMap(superclass); Iterator it = allMethods.entrySet().iterator(); while (it.hasNext()) { @@ -150,7 +150,7 @@ { if (ClassAdvisor.isAdvisable(declaredMethods[i])) { - long hash = org.jboss.util.MethodHashing.methodHash(declaredMethods[i]); + long hash = org.jboss.aop.util.MethodHashing.methodHash(declaredMethods[i]); advised.put(new Long(hash), declaredMethods[i]); } } |
From: Bill B. <pat...@us...> - 2004-05-28 23:46:50
|
User: patriot1burke Date: 04/05/28 16:46:44 Modified: src/main/org/jboss/aop/proxy ClassProxyFactory.java Log: expanded Invocation interface for metadata resolved by Class (i.e. annotations) This was for EJB 3 code Revision Changes Path 1.15 +2 -2 jboss-aop/src/main/org/jboss/aop/proxy/ClassProxyFactory.java Index: ClassProxyFactory.java =================================================================== RCS file: /cvsroot/jboss/jboss-aop/src/main/org/jboss/aop/proxy/ClassProxyFactory.java,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- ClassProxyFactory.java 14 May 2004 00:26:23 -0000 1.14 +++ ClassProxyFactory.java 28 May 2004 23:46:43 -0000 1.15 @@ -29,7 +29,7 @@ /** * * @author <a href="mailto:bi...@jb...">Bill Burke</a> - * @version $Revision: 1.14 $ + * @version $Revision: 1.15 $ */ public class ClassProxyFactory { @@ -156,7 +156,7 @@ } } - private static HashMap methodMap(Class clazz) + public static HashMap methodMap(Class clazz) throws Exception { HashMap methods = new HashMap(); |
From: Bill B. <pat...@us...> - 2004-07-13 00:45:53
|
User: patriot1burke Date: 04/07/12 17:45:35 Modified: src/main/org/jboss/aop/proxy ClassProxyFactory.java Log: added annotation resolving for Invocation interface. Revision Changes Path 1.16 +1 -2 jboss-aop/src/main/org/jboss/aop/proxy/ClassProxyFactory.java Index: ClassProxyFactory.java =================================================================== RCS file: /cvsroot/jboss/jboss-aop/src/main/org/jboss/aop/proxy/ClassProxyFactory.java,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- ClassProxyFactory.java 28 May 2004 23:46:43 -0000 1.15 +++ ClassProxyFactory.java 13 Jul 2004 00:45:35 -0000 1.16 @@ -16,7 +16,6 @@ import javassist.Modifier; import org.jboss.aop.AspectManager; import org.jboss.aop.ClassAdvisor; -import org.jboss.aop.util.PayloadKey; import org.jboss.util.collection.WeakValueHashMap; import java.lang.reflect.Method; @@ -29,7 +28,7 @@ /** * * @author <a href="mailto:bi...@jb...">Bill Burke</a> - * @version $Revision: 1.15 $ + * @version $Revision: 1.16 $ */ public class ClassProxyFactory { |
From: Bill B. <pat...@us...> - 2004-07-16 21:53:19
|
User: patriot1burke Date: 04/07/16 14:53:09 Modified: src/main/org/jboss/aop/proxy ClassProxyFactory.java Log: fixed some bugs in instrumentor that was causing problems with Remoting and ClassProxies. Revision Changes Path 1.17 +5 -2 jboss-aop/src/main/org/jboss/aop/proxy/ClassProxyFactory.java Index: ClassProxyFactory.java =================================================================== RCS file: /cvsroot/jboss/jboss-aop/src/main/org/jboss/aop/proxy/ClassProxyFactory.java,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- ClassProxyFactory.java 13 Jul 2004 00:45:35 -0000 1.16 +++ ClassProxyFactory.java 16 Jul 2004 21:53:08 -0000 1.17 @@ -14,6 +14,8 @@ import javassist.CtMethod; import javassist.CtNewMethod; import javassist.Modifier; +import javassist.CtNewConstructor; +import javassist.SerialVersionUID; import org.jboss.aop.AspectManager; import org.jboss.aop.ClassAdvisor; import org.jboss.util.collection.WeakValueHashMap; @@ -28,7 +30,7 @@ /** * * @author <a href="mailto:bi...@jb...">Bill Burke</a> - * @version $Revision: 1.16 $ + * @version $Revision: 1.17 $ */ public class ClassProxyFactory { @@ -101,6 +103,7 @@ CtClass proxy = pool.makeClass("org.jboss.aop.proxy$" + clazz.getName() , superclass); proxy.addInterface(pool.get("org.jboss.aop.proxy.ClassProxy")); proxy.addInterface(pool.get("java.io.Externalizable")); + proxy.addInterface(pool.get("org.jboss.aop.instrument.Untransformable")); CtClass type = pool.get("org.jboss.aop.ClassInstanceAdvisor"); CtField field = new CtField(type, "_proxy$instance$advisor", proxy); @@ -108,7 +111,6 @@ Modifier.PRIVATE); proxy.addField(field, CtField.Initializer.byExpr("new org.jboss.aop.ClassInstanceAdvisor(this)")); - proxy.addMethod(CtNewMethod.copy(writeEx, proxy, null)); proxy.addMethod(CtNewMethod.copy(readEx, proxy, null)); proxy.addMethod(CtNewMethod.copy(getInstanceAdvisor, proxy, null)); @@ -133,6 +135,7 @@ proxy.addMethod(newMethod); } } + SerialVersionUID.setSerialVersionUID(proxy); return proxy.toClass(); } |
From: Bill B. <pat...@us...> - 2004-08-30 21:17:49
|
User: patriot1burke Date: 04/08/30 14:17:43 Modified: src/main/org/jboss/aop/proxy ClassProxyFactory.java Log: don't create interceptors that have been undeployed. Revision Changes Path 1.18 +1 -2 jboss-aop/src/main/org/jboss/aop/proxy/ClassProxyFactory.java Index: ClassProxyFactory.java =================================================================== RCS file: /cvsroot/jboss/jboss-aop/src/main/org/jboss/aop/proxy/ClassProxyFactory.java,v retrieving revision 1.17 retrieving revision 1.18 diff -u -r1.17 -r1.18 --- ClassProxyFactory.java 16 Jul 2004 21:53:08 -0000 1.17 +++ ClassProxyFactory.java 30 Aug 2004 21:17:42 -0000 1.18 @@ -14,7 +14,6 @@ import javassist.CtMethod; import javassist.CtNewMethod; import javassist.Modifier; -import javassist.CtNewConstructor; import javassist.SerialVersionUID; import org.jboss.aop.AspectManager; import org.jboss.aop.ClassAdvisor; @@ -30,7 +29,7 @@ /** * * @author <a href="mailto:bi...@jb...">Bill Burke</a> - * @version $Revision: 1.17 $ + * @version $Revision: 1.18 $ */ public class ClassProxyFactory { |