From: Kabir K. <kk...@jb...> - 2006-04-01 16:25:06
|
User: kkhan Date: 06/04/01 11:24:56 Modified: src/main/org/jboss/aop/proxy/container ClassProxyContainer.java ContainerCache.java Log: [JBAOP-210] Interfaces passed in to the proxy factory should be added as interface introductions to the instance domain, not to the class domain Revision Changes Path 1.18 +8 -2 jboss-aop/src/main/org/jboss/aop/proxy/container/ClassProxyContainer.java (In the diff below, changes in quantity of whitespace are not shown.) Index: ClassProxyContainer.java =================================================================== RCS file: /cvsroot/jboss/jboss-aop/src/main/org/jboss/aop/proxy/container/ClassProxyContainer.java,v retrieving revision 1.17 retrieving revision 1.18 diff -u -b -r1.17 -r1.18 --- ClassProxyContainer.java 1 Apr 2006 15:27:26 -0000 1.17 +++ ClassProxyContainer.java 1 Apr 2006 16:24:56 -0000 1.18 @@ -117,11 +117,17 @@ } } - public InstanceProxyContainer createInstanceProxyContainer(MetaDataContext metaDataContext) + public InstanceProxyContainer createInstanceProxyContainer(InterfaceIntroduction introduction, MetaDataContext metaDataContext) { ProxyAdvisorDomain domain = new ProxyAdvisorDomain(manager, clazz, false); domain.setInheritsBindings(true); domain.setInheritsDeclarations(true); + if (introduction != null) + { + domain.addInterfaceIntroduction(introduction); + } + + InstanceProxyContainer ia = new InstanceProxyContainer(super.getName(), domain, this, metaDataContext); @@ -130,7 +136,7 @@ public InstanceProxyContainer createInstanceProxyContainer() { - return createInstanceProxyContainer(null); + return createInstanceProxyContainer(null, null); } public void initialise(Class proxiedClass) 1.10 +8 -8 jboss-aop/src/main/org/jboss/aop/proxy/container/ContainerCache.java (In the diff below, changes in quantity of whitespace are not shown.) Index: ContainerCache.java =================================================================== RCS file: /cvsroot/jboss/jboss-aop/src/main/org/jboss/aop/proxy/container/ContainerCache.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -b -r1.9 -r1.10 --- ContainerCache.java 1 Apr 2006 15:27:26 -0000 1.9 +++ ContainerCache.java 1 Apr 2006 16:24:56 -0000 1.10 @@ -32,7 +32,7 @@ /** * * @author <a href="kab...@jb...">Kabir Khan</a> - * @version $Revision: 1.9 $ + * @version $Revision: 1.10 $ */ public class ContainerCache { @@ -114,12 +114,6 @@ private ClassProxyContainer createContainer(AspectManager manager, Class proxiedClass, Class[] interfaces) { ProxyAdvisorDomain domain = new ProxyAdvisorDomain(manager, proxiedClass, false); - if (interfaces != null && interfaces.length > 0) - { - InterfaceIntroduction intro = getInterfaceIntroduction(proxiedClass, interfaces); - domain.addInterfaceIntroduction(intro); - } - String classname = (proxiedClass != null) ? proxiedClass.getName() : "AOP$Hollow"; ClassProxyContainer container = new ClassProxyContainer(classname /*+ " ClassProxy" + (counter++)*/, domain); domain.setAdvisor(container); @@ -158,7 +152,13 @@ { if ((interfaces != null && interfaces.length > 0) || metaDataContext != null) { - instanceContainer = classContainer.createInstanceProxyContainer(metaDataContext); + InterfaceIntroduction introduction = null; + if (interfaces != null && interfaces.length > 0) + { + introduction = getInterfaceIntroduction(classContainer.getClazz(), interfaces); + } + + instanceContainer = classContainer.createInstanceProxyContainer(introduction, metaDataContext); } } |