[jboss-cvs] JBossAS SVN: r57778 - in projects/aop/trunk/aop: . src/main/org/jboss/aop src/main/org/jboss/aop/instrument src/main/org/jboss/aop/proxy/container src/resources/test src/resources/test/nameddomain src/test/org/jboss/test/aop src/test/org/jboss/test/aop/nameddomain src/test/org/jboss/test/aop/proxy
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Oct 23 15:29:06 EDT 2006
Author: kabir.khan at jboss.com
Date: 2006-10-23 15:28:54 -0400 (Mon, 23 Oct 2006)
New Revision: 57778
Added:
projects/aop/trunk/aop/src/resources/test/nameddomain/
projects/aop/trunk/aop/src/resources/test/nameddomain/jboss-aop.xml
projects/aop/trunk/aop/src/resources/test/nameddomain/manual-aop.xml
projects/aop/trunk/aop/src/test/org/jboss/test/aop/nameddomain/
projects/aop/trunk/aop/src/test/org/jboss/test/aop/nameddomain/InstanceInterceptor.java
projects/aop/trunk/aop/src/test/org/jboss/test/aop/nameddomain/NamedDomainTestCase.java
projects/aop/trunk/aop/src/test/org/jboss/test/aop/nameddomain/POJO.java
projects/aop/trunk/aop/src/test/org/jboss/test/aop/nameddomain/Proxied.java
Modified:
projects/aop/trunk/aop/build-tests-jdk14.xml
projects/aop/trunk/aop/build-tests-jdk50.xml
projects/aop/trunk/aop/src/main/org/jboss/aop/AspectManager.java
projects/aop/trunk/aop/src/main/org/jboss/aop/Domain.java
projects/aop/trunk/aop/src/main/org/jboss/aop/DomainDefinition.java
projects/aop/trunk/aop/src/main/org/jboss/aop/GeneratedAdvisorDomain.java
projects/aop/trunk/aop/src/main/org/jboss/aop/InstanceDomain.java
projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorInstrumentor.java
projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/ClassProxyContainer.java
projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/ContainerCache.java
projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/GeneratedAOPProxyFactory.java
projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/InstanceProxyContainer.java
projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/ProxyAdvisorDomain.java
projects/aop/trunk/aop/src/test/org/jboss/test/aop/proxy/ProxyTestCase.java
Log:
Add an internal hierarchy of domains referencable by name so that the domains can always be found.
Modified: projects/aop/trunk/aop/build-tests-jdk14.xml
===================================================================
--- projects/aop/trunk/aop/build-tests-jdk14.xml 2006-10-23 18:07:08 UTC (rev 57777)
+++ projects/aop/trunk/aop/build-tests-jdk14.xml 2006-10-23 19:28:54 UTC (rev 57778)
@@ -341,18 +341,23 @@
<arg value="${build.bootclasspath}"/>
</java>
+ <!-- Tests only applicable for this weaving mode -->
+ <antcall target="_run-bootclasspath-test" inheritRefs="true">
+ <param name="test" value="override"/>
+ <param name="caller" value="bootclasspath-genadvisor-tests"/>
+ <param name="exclude" value="**/OverrideTestCase.class"/>
+ </antcall>
+ <antcall target="_run-bootclasspath-test" inheritRefs="true">
+ <param name="test" value="nameddomain"/>
+ <param name="caller" value="bootclasspath-genadvisor-tests"/>
+ </antcall>
+
<!-- Add tests in _base-tests unless they should only be run in this weaving mode -->
<antcall target="_base-tests" inheritRefs="true">
<param name="caller" value="bootclasspath-genadvisor-tests"/>
<param name="test-target" value="_run-bootclasspath-test"/>
</antcall>
- <!-- Tests only applicable for this weaving mode -->
- <antcall target="_run-bootclasspath-test" inheritRefs="true">
- <param name="test" value="override"/>
- <param name="caller" value="bootclasspath-genadvisor-tests"/>
- <param name="exclude" value="**/OverrideTestCase.class"/>
- </antcall>
</target>
<target name="loadtime-test" depends="init">
@@ -476,18 +481,23 @@
<target name="non-optimized-precompiled-tests" depends="retroweave">
+ <!-- Tests only applicable for this weaving mode -->
+ <antcall target="_run-precompiled-test" inheritRefs="true">
+ <param name="test" value="override"/>
+ <param name="caller" value="non-optimized-precompiled-tests"/>
+ <param name="exclude" value="**/GenAdvisorOverrideTestCase.class"/>
+ </antcall>
+ <antcall target="_run-precompiled-test" inheritRefs="true">
+ <param name="test" value="nameddomain"/>
+ <param name="caller" value="non-optimized-precompiled-tests"/>
+ </antcall>
+
<!-- Add tests in _base-precompiled-tests unless they should only be run in this weaving mode -->
<antcall target="_base-tests" inheritRefs="true">
<param name="caller" value="non-optimized-precompiled-tests"/>
<param name="test-target" value="_run-precompiled-test"/>
</antcall>
- <!-- Tests only applicable for this weaving mode -->
- <antcall target="_run-precompiled-test" inheritRefs="true">
- <param name="test" value="override"/>
- <param name="caller" value="non-optimized-precompiled-tests"/>
- <param name="exclude" value="**/GenAdvisorOverrideTestCase.class"/>
- </antcall>
</target>
<!-- ==================================================================================== -->
Modified: projects/aop/trunk/aop/build-tests-jdk50.xml
===================================================================
--- projects/aop/trunk/aop/build-tests-jdk50.xml 2006-10-23 18:07:08 UTC (rev 57777)
+++ projects/aop/trunk/aop/build-tests-jdk50.xml 2006-10-23 19:28:54 UTC (rev 57778)
@@ -306,13 +306,6 @@
<!-- JAVAAGENT TESTS (JDK 5.0) -->
<!-- ==================================================================================== -->
<target name="javaagent-tests" depends="compile-test-classes">
-
- <!-- Add tests in _base-tests unless they should only be run in this weaving mode -->
- <antcall target="_base-jdk50-tests" inheritRefs="true">
- <param name="caller" value="javaagent-tests"/>
- <param name="test-target" value="_run-javaagent-test"/>
- </antcall>
-
<!-- Tests only applicable for this weaving mode -->
<antcall target="_run-javaagent-test" inheritRefs="true">
<param name="test" value="override"/>
@@ -320,6 +313,11 @@
<param name="exclude" value="**/GenAdvisorOverrideTestCase.class"/>
</antcall>
+ <!-- Add tests in _base-tests unless they should only be run in this weaving mode -->
+ <antcall target="_base-jdk50-tests" inheritRefs="true">
+ <param name="caller" value="javaagent-tests"/>
+ <param name="test-target" value="_run-javaagent-test"/>
+ </antcall>
</target>
<target name="loadtime-test" depends="init">
@@ -334,19 +332,22 @@
<!-- GENERATED ADVISOR JAVAGENT TESTS (JDK 5.0) -->
<!-- ==================================================================================== -->
<target name="javaagent-genadvisor-tests" depends="compile-test-classes">
+ <!-- Tests only applicable for this weaving mode -->
+ <antcall target="_run-javaagent-test" inheritRefs="true">
+ <param name="test" value="override"/>
+ <param name="caller" value="javaagent-genadvisor-tests"/>
+ <param name="exclude" value="**/OverrideTestCase.class"/>
+ </antcall>
+ <antcall target="_run-javaagent-test" inheritRefs="true">
+ <param name="test" value="nameddomain"/>
+ <param name="caller" value="javaagent-genadvisor-tests"/>
+ </antcall>
<!-- Add tests in _base-tests unless they should only be run in this weaving mode -->
<antcall target="_base-jdk50-tests" inheritRefs="true">
<param name="caller" value="javaagent-genadvisor-tests"/>
<param name="test-target" value="_run-javaagent-test"/>
</antcall>
-
- <!-- Tests only applicable for this weaving mode -->
- <antcall target="_run-javaagent-test" inheritRefs="true">
- <param name="test" value="override"/>
- <param name="caller" value="javaagent-genadvisor-tests"/>
- <param name="exclude" value="**/OverrideTestCase.class"/>
- </antcall>
</target>
<target name="loadtime-ga-test" depends="init">
@@ -446,12 +447,10 @@
</antcall>
<!-- Tests only applicable for this weaving mode -->
-
<antcall target="_run-precompiled-test" inheritRefs="true">
<param name="test" value="args"/>
<param name="caller" value="precompiled-tests"/>
</antcall>
-
<antcall target="_run-precompiled-test" inheritRefs="true">
<param name="test" value="override"/>
<param name="caller" value="precompiled-tests"/>
@@ -497,12 +496,6 @@
<path refid="jboss.aop.classpath"/>
</path>
- <!-- Add tests in _base-precompiled-tests unless they should only be run in this weaving mode -->
- <antcall target="_base-jdk50-tests" inheritRefs="true">
- <param name="caller" value="precompiled-genadvisor-tests"/>
- <param name="test-target" value="_run-precompiled-test"/>
- </antcall>
-
<!-- Tests only applicable for this weaving mode -->
<antcall target="_run-precompiled-test" inheritRefs="true">
<param name="test" value="args"/>
@@ -521,6 +514,16 @@
<param name="caller" value="precompiled-genadvisor-tests"/>
<param name="exclude" value="**/OverrideTestCase.class"/>
</antcall>
+ <antcall target="_run-javaagent-test" inheritRefs="true">
+ <param name="test" value="nameddomain"/>
+ <param name="caller" value="javaagent-genadvisor-tests"/>
+ </antcall>
+
+ <!-- Add tests in _base-precompiled-tests unless they should only be run in this weaving mode -->
+ <antcall target="_base-jdk50-tests" inheritRefs="true">
+ <param name="caller" value="precompiled-genadvisor-tests"/>
+ <param name="test-target" value="_run-precompiled-test"/>
+ </antcall>
</target>
<target name="precompiled-test" depends="init">
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/AspectManager.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/AspectManager.java 2006-10-23 18:07:08 UTC (rev 57777)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/AspectManager.java 2006-10-23 19:28:54 UTC (rev 57778)
@@ -70,6 +70,7 @@
import org.jboss.aop.pointcut.PointcutStats;
import org.jboss.aop.pointcut.Typedef;
import org.jboss.aop.pointcut.ast.ClassExpression;
+import org.jboss.util.collection.WeakValueHashMap;
import org.jboss.util.loading.Translatable;
import org.jboss.util.loading.Translator;
import EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap;
@@ -103,6 +104,9 @@
/** A map of domains by class, maintaned by the top level AspectManager */
protected final WeakHashMap subDomainsPerClass = new WeakHashMap();
+
+ /** A map of domains by name */
+ protected final WeakValueHashMap subDomainsByName = new WeakValueHashMap();
/** Each domain may have sub domains interested in changes happening in this manager/domain */
protected final WeakHashMap subscribedSubDomains = new WeakHashMap();
@@ -532,6 +536,52 @@
return (Advisor) ref.get();
}
}
+
+ /**
+ * Takes a string of the form /sub1/sub2/sub3 of subdomains by name, where the leading "/" is the main AspectManager.
+ * The main user of the naming of domains is (un)serialization of advisors/containers
+ *
+ * @param The FQN of the domain
+ * @return the domain referenced by the FQN or null if it does not exist
+ */
+ public AspectManager findManagerByName(String fqn)
+ {
+ String[] nameparts = fqn.split("/");
+ return findManagerByName(nameparts);
+ }
+
+ private AspectManager findManagerByName(String[] nameparts)
+ {
+ AspectManager found = this;
+ for (int i = 0 ; i < nameparts.length ; i++)
+ {
+ if (nameparts[i].trim().length() == 0)
+ {
+ continue;
+ }
+ found = found.findManagerByNameInternal(nameparts[i]);
+ if (found == null)
+ {
+ break;
+ }
+ }
+ return found;
+ }
+
+ private AspectManager findManagerByNameInternal(String name)
+ {
+ return (Domain)subDomainsByName.get(name);
+ }
+
+ protected void addSubDomainByName(Domain domain)
+ {
+ subDomainsByName.put(domain.getDomainName(), domain);
+ }
+
+ public String getManagerFQN()
+ {
+ return "/";
+ }
public ClassAdvisor getAdvisorIfAdvised(Class clazz)
{
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/Domain.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/Domain.java 2006-10-23 18:07:08 UTC (rev 57777)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/Domain.java 2006-10-23 19:28:54 UTC (rev 57778)
@@ -21,6 +21,8 @@
*/
package org.jboss.aop;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
@@ -37,6 +39,7 @@
import org.jboss.aop.pointcut.PointcutStats;
import org.jboss.aop.pointcut.Typedef;
import org.jboss.aop.pointcut.ast.ClassExpression;
+import org.jboss.util.id.GUID;
/**
* Comment
@@ -46,19 +49,54 @@
*/
public class Domain extends AspectManager
{
+ String name;
protected AspectManager parent;
protected boolean parentFirst;
protected boolean inheritsDeclarations = true;
protected boolean inheritsBindings = false;
- public Domain(AspectManager manager, boolean parentFirst)
+ public Domain(AspectManager manager, String name, boolean parentFirst)
{
this.parent = manager;
this.parentFirst = parentFirst;
+ this.name = name;
+ manager.addSubDomainByName(this);
}
+ public String getDomainName()
+ {
+ return name;
+ }
+ public String getManagerFQN()
+ {
+ return parent.getManagerFQN() + name + "/";
+ }
+
+ public static String getDomainName(final Class clazz, final boolean forInstance)
+ {
+ String name = (String)AccessController.doPrivileged(new PrivilegedAction() {
+
+ public Object run()
+ {
+ StringBuffer sb = new StringBuffer();
+ sb.append(clazz.getName());
+ sb.append("_");
+ sb.append(System.identityHashCode(clazz.getClassLoader()));
+
+ if (forInstance)
+ {
+ GUID guid = new GUID();//Are these guys expensive to create?
+ sb.append("_");
+ sb.append(guid.toString());
+ }
+ return sb.toString();
+ }
+ });
+ return name;
+ }
+
/**
* Inherits interceptor, aspect, advice stack definitions
*
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/DomainDefinition.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/DomainDefinition.java 2006-10-23 18:07:08 UTC (rev 57777)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/DomainDefinition.java 2006-10-23 19:28:54 UTC (rev 57778)
@@ -36,7 +36,7 @@
public DomainDefinition(String name, AspectManager parent, boolean parentFirst, boolean inheritDefs, boolean inheritBindings)
{
this.name = name;
- Domain domain = new Domain(parent, parentFirst);
+ Domain domain = new Domain(parent, name, parentFirst);
domain.setInheritsBindings(inheritBindings);
domain.setInheritsDeclarations(inheritDefs);
manager = domain;
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/GeneratedAdvisorDomain.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/GeneratedAdvisorDomain.java 2006-10-23 18:07:08 UTC (rev 57777)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/GeneratedAdvisorDomain.java 2006-10-23 19:28:54 UTC (rev 57778)
@@ -28,14 +28,14 @@
public class GeneratedAdvisorDomain extends Domain
{
- public GeneratedAdvisorDomain(AspectManager manager, Class clazz, boolean parentFirst)
+ public GeneratedAdvisorDomain(AspectManager manager, String name, Class clazz)
{
- this(manager, clazz, parentFirst, false);
+ this(manager, name, clazz, false);
}
- public GeneratedAdvisorDomain(AspectManager manager, Class clazz, boolean parentFirst, boolean instanceDomain)
+ public GeneratedAdvisorDomain(AspectManager manager, String name, Class clazz, boolean instanceDomain)
{
- super(manager, parentFirst);
+ super(manager, name, false);
if (!instanceDomain)
{
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/InstanceDomain.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/InstanceDomain.java 2006-10-23 18:07:08 UTC (rev 57777)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/InstanceDomain.java 2006-10-23 19:28:54 UTC (rev 57778)
@@ -33,9 +33,9 @@
{
protected Advisor advisor;
- public InstanceDomain(AspectManager manager, boolean parentFirst)
+ public InstanceDomain(AspectManager manager, String name, boolean parentFirst)
{
- super(manager, parentFirst);
+ super(manager, name, parentFirst);
setInheritsBindings(true);
}
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorInstrumentor.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorInstrumentor.java 2006-10-23 18:07:08 UTC (rev 57777)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorInstrumentor.java 2006-10-23 19:28:54 UTC (rev 57778)
@@ -384,7 +384,8 @@
{
String initBody =
"{" +
- " " + DOMAIN + "= new org.jboss.aop.GeneratedAdvisorDomain($1, " + DECLARING_CLASS + ", false); " +
+ " String domainName = org.jboss.aop.Domain.getDomainName(" + DECLARING_CLASS + ", $2);" +
+ " " + DOMAIN + "= new org.jboss.aop.GeneratedAdvisorDomain($1, domainName, " + DECLARING_CLASS + ", false); " +
" ((org.jboss.aop.Domain)" + DOMAIN + ").setInheritsBindings(true); " +
" " + INITIALISE_METHODS + "();" +
" " + INITIALISE_CONSTRUCTORS + "();" +
@@ -399,7 +400,7 @@
Modifier.PROTECTED,
CtClass.voidType,
"initialise",
- new CtClass[]{forName("org.jboss.aop.AspectManager")},
+ new CtClass[]{forName("org.jboss.aop.AspectManager"), CtClass.booleanType},
EMPTY_EXCEPTIONS,
initBody,
genadvisor);
@@ -411,7 +412,7 @@
ctor.setBody(
"{" +
" super(\"" + clazz.getName() + "\"); " +
- " initialise(org.jboss.aop.AspectManager.instance(this.getClass().getClassLoader()));" + //Use the CL of the class, since we may be in a scoped loader
+ " initialise(org.jboss.aop.AspectManager.instance(this.getClass().getClassLoader()), false);" + //Use the CL of the class, since we may be in a scoped loader
"}");
genadvisor.addConstructor(ctor);
@@ -420,7 +421,7 @@
"{" +
" super(\"" + clazz.getName() + "\"); " +
" super.setParentAdvisor($1);" +
- " initialise($1.getDomain());" +
+ " initialise($1.getDomain(), true);" +
"}";
CtConstructor ctorWithParentAdvisor = CtNewConstructor.make(new CtClass[]{genadvisor}, EMPTY_EXCEPTIONS, instanceBody, genadvisor);
genadvisor.addConstructor(ctorWithParentAdvisor);
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/ClassProxyContainer.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/ClassProxyContainer.java 2006-10-23 18:07:08 UTC (rev 57777)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/ClassProxyContainer.java 2006-10-23 19:28:54 UTC (rev 57778)
@@ -154,25 +154,17 @@
}
}
- public InstanceProxyContainer createInstanceProxyContainer(InterfaceIntroduction introduction, /*MetaDataContext*/ Object metaDataContext)
+ public InstanceProxyContainer createInstanceProxyContainer()
{
- ProxyAdvisorDomain domain = new ProxyAdvisorDomain(manager, clazz, false);
+ //This seems to get thrown away with every invocation
+ ProxyAdvisorDomain domain = new ProxyAdvisorDomain(manager, null, clazz, false);
domain.setInheritsBindings(true);
domain.setInheritsDeclarations(true);
- if (introduction != null)
- {
- domain.addInterfaceIntroduction(introduction);
- }
- InstanceProxyContainer ia = new InstanceProxyContainer(super.getName(), domain, this, metaDataContext);
+ InstanceProxyContainer ia = new InstanceProxyContainer(super.getName(), domain, this, null);
return ia;
}
-
- public InstanceProxyContainer createInstanceProxyContainer()
- {
- return createInstanceProxyContainer(null, null);
- }
public void initialise(Class proxiedClass)
{
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/ContainerCache.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/ContainerCache.java 2006-10-23 18:07:08 UTC (rev 57777)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/ContainerCache.java 2006-10-23 19:28:54 UTC (rev 57778)
@@ -26,6 +26,7 @@
import org.jboss.aop.Advised;
import org.jboss.aop.Advisor;
import org.jboss.aop.AspectManager;
+import org.jboss.aop.Domain;
import org.jboss.aop.introduction.InterfaceIntroduction;
import org.jboss.aop.metadata.SimpleMetaData;
//import org.jboss.repository.spi.MetaDataContext;
@@ -162,7 +163,8 @@
private ClassProxyContainer createContainer()
{
- ProxyAdvisorDomain domain = new ProxyAdvisorDomain(manager, key.getClazz(), false);
+ String name = Domain.getDomainName(key.getClazz(), false);
+ ProxyAdvisorDomain domain = new ProxyAdvisorDomain(manager, name, key.getClazz(), false);
String classname = (key.getClazz() != null) ? key.getClazz().getName() : "AOP$Hollow";
ClassProxyContainer container = new ClassProxyContainer(classname /*+ " ClassProxy" + (counter++)*/, domain);
domain.setAdvisor(container);
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/GeneratedAOPProxyFactory.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/GeneratedAOPProxyFactory.java 2006-10-23 18:07:08 UTC (rev 57777)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/GeneratedAOPProxyFactory.java 2006-10-23 19:28:54 UTC (rev 57778)
@@ -21,8 +21,6 @@
*/
package org.jboss.aop.proxy.container;
-import java.util.Arrays;
-
import org.jboss.aop.Advised;
import org.jboss.aop.AspectManager;
import org.jboss.aop.instrument.Untransformable;
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/InstanceProxyContainer.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/InstanceProxyContainer.java 2006-10-23 18:07:08 UTC (rev 57777)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/InstanceProxyContainer.java 2006-10-23 19:28:54 UTC (rev 57778)
@@ -58,7 +58,8 @@
public static InstanceProxyContainer createInstanceProxyContainer(Advisor classAdvisor, InterfaceIntroduction introduction, /*MetaDataContext*/ Object metaDataContext)
{
- ProxyAdvisorDomain domain = new ProxyAdvisorDomain(classAdvisor.getManager(), classAdvisor.getClazz(), false, true);
+ String name = Domain.getDomainName(classAdvisor.getClazz(), true);
+ ProxyAdvisorDomain domain = new ProxyAdvisorDomain(classAdvisor.getManager(), name, classAdvisor.getClazz(), true);
if (introduction != null)
{
domain.addInterfaceIntroduction(introduction);
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/ProxyAdvisorDomain.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/ProxyAdvisorDomain.java 2006-10-23 18:07:08 UTC (rev 57777)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/ProxyAdvisorDomain.java 2006-10-23 19:28:54 UTC (rev 57778)
@@ -37,15 +37,15 @@
{
protected WeakReference advisor;
- public ProxyAdvisorDomain(AspectManager manager, Class clazz, boolean parentFirst)
+ public ProxyAdvisorDomain(AspectManager manager, String name, Class clazz)
{
- this(manager, clazz, parentFirst, false);
+ this(manager, name, clazz, false);
}
- public ProxyAdvisorDomain(AspectManager manager, Class clazz, boolean parentFirst, boolean instanceDomain)
+ public ProxyAdvisorDomain(AspectManager manager, String name, Class clazz, boolean instanceDomain)
{
// FIXME ProxyAdvisorDomain constructor
- super(manager, clazz, parentFirst, instanceDomain);
+ super(manager, name, clazz, instanceDomain);
super.setInheritsBindings(true);
super.setInheritsDeclarations(true);
Added: projects/aop/trunk/aop/src/resources/test/nameddomain/jboss-aop.xml
===================================================================
--- projects/aop/trunk/aop/src/resources/test/nameddomain/jboss-aop.xml 2006-10-23 18:07:08 UTC (rev 57777)
+++ projects/aop/trunk/aop/src/resources/test/nameddomain/jboss-aop.xml 2006-10-23 19:28:54 UTC (rev 57778)
@@ -0,0 +1,6 @@
+<aop>
+ <interceptor class="org.jboss.test.aop.nameddomain.InstanceInterceptor" scope="PER_INSTANCE"/>
+ <bind pointcut="execution(* org.jboss.test.aop.nameddomain.POJO->someMethod())">
+ <interceptor-ref name="org.jboss.test.aop.nameddomain.InstanceInterceptor"/>
+ </bind>
+</aop>
Added: projects/aop/trunk/aop/src/resources/test/nameddomain/manual-aop.xml
===================================================================
--- projects/aop/trunk/aop/src/resources/test/nameddomain/manual-aop.xml 2006-10-23 18:07:08 UTC (rev 57777)
+++ projects/aop/trunk/aop/src/resources/test/nameddomain/manual-aop.xml 2006-10-23 19:28:54 UTC (rev 57778)
@@ -0,0 +1,6 @@
+<aop>
+ <interceptor class="org.jboss.test.aop.nameddomain.InstanceInterceptor" scope="PER_INSTANCE"/>
+ <bind pointcut="execution(* org.jboss.test.aop.nameddomain.Proxied->someMethod())">
+ <interceptor-ref name="org.jboss.test.aop.nameddomain.InstanceInterceptor"/>
+ </bind>
+</aop>
Added: projects/aop/trunk/aop/src/test/org/jboss/test/aop/nameddomain/InstanceInterceptor.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/nameddomain/InstanceInterceptor.java 2006-10-23 18:07:08 UTC (rev 57777)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/nameddomain/InstanceInterceptor.java 2006-10-23 19:28:54 UTC (rev 57778)
@@ -0,0 +1,45 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.aop.nameddomain;
+
+import org.jboss.aop.advice.Interceptor;
+import org.jboss.aop.joinpoint.Invocation;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class InstanceInterceptor implements Interceptor
+{
+ public static InstanceInterceptor icptr;
+ public String getName()
+ {
+ return this.getClass().getName();
+ }
+
+ public Object invoke(Invocation invocation) throws Throwable
+ {
+ return invocation.invokeNext();
+ }
+
+}
Added: projects/aop/trunk/aop/src/test/org/jboss/test/aop/nameddomain/NamedDomainTestCase.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/nameddomain/NamedDomainTestCase.java 2006-10-23 18:07:08 UTC (rev 57777)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/nameddomain/NamedDomainTestCase.java 2006-10-23 19:28:54 UTC (rev 57778)
@@ -0,0 +1,130 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.aop.nameddomain;
+
+import java.net.URL;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+import org.jboss.aop.Advised;
+import org.jboss.aop.Advisor;
+import org.jboss.aop.AspectManager;
+import org.jboss.aop.AspectXmlLoader;
+import org.jboss.aop.Domain;
+import org.jboss.aop.InstanceAdvisor;
+import org.jboss.aop.proxy.ClassProxyFactory;
+import org.jboss.aop.proxy.container.AOPProxyFactoryParameters;
+import org.jboss.aop.proxy.container.AspectManaged;
+import org.jboss.aop.proxy.container.ContainerProxyFactory;
+import org.jboss.aop.proxy.container.GeneratedAOPProxyFactory;
+import org.jboss.test.aop.AOPTestWithSetup;
+
+/**
+ * This is only relevant for generated advisors
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class NamedDomainTestCase extends AOPTestWithSetup
+{
+ public static void main(String[] args)
+ {
+ TestRunner.run(suite());
+ }
+
+ public static Test suite()
+ {
+ TestSuite suite = new TestSuite("NamedDomainTestCase");
+ suite.addTestSuite(NamedDomainTestCase.class);
+ return suite;
+ }
+
+ public NamedDomainTestCase(String name)
+ {
+ super(name);
+ }
+
+ public void testWovenNamedDomains()
+ {
+ AspectManager manager = AspectManager.instance();;
+ POJO pojo = new POJO();
+ pojo.someMethod();
+
+ Advisor advisor = ((Advised)pojo)._getAdvisor();
+ AspectManager domain = advisor.getManager();
+ String fqn = domain.getManagerFQN();
+
+ System.out.println("fqn: " + fqn);
+
+ AspectManager foundDomain = manager.findManagerByName(fqn);
+ assertSame(domain, foundDomain);
+
+ InstanceAdvisor ia = ((Advised)pojo)._getInstanceAdvisor();
+ assertNotNull(ia);
+ AspectManager instanceDomain = ((Advisor)ia).getManager();
+ fqn = instanceDomain.getManagerFQN();
+ System.out.println("fqn: " + fqn);
+
+ AspectManager foundInstanceDomain = manager.findManagerByName(fqn);
+ assertSame(instanceDomain, foundInstanceDomain);
+ }
+
+ public void testProxiedNamedDomains() throws Exception
+ {
+ Proxied tgt = new Proxied();//Load the class before we deploy the xml that will cause weaving
+
+ URL url = this.getClass().getProtectionDomain().getCodeSource().getLocation();
+ System.out.println("class url: " + url);
+ String location = url.toString();
+ int index = location.indexOf("/output/");
+ location = location.substring(0, index);
+
+ location = location + "/src/resources/test/nameddomain/manual-aop.xml";
+ url = new URL(location);
+ System.out.println("xml url: " + url);
+ AspectXmlLoader.deployXML(url);
+
+ AOPProxyFactoryParameters params = new AOPProxyFactoryParameters();
+ params.setTarget(tgt);
+ GeneratedAOPProxyFactory factory = new GeneratedAOPProxyFactory();
+ Proxied proxied = (Proxied)factory.createAdvisedProxy(params);
+
+ proxied.someMethod();
+
+ Advisor advisor = ((AspectManaged)proxied).getAdvisor();
+ assertNotNull(advisor);
+ AspectManager domain = advisor.getManager();
+ String fqn = domain.getManagerFQN();
+ AspectManager foundDomain = AspectManager.instance().findManagerByName(fqn);
+ assertSame(domain, foundDomain);
+
+ InstanceAdvisor instanceAdvisor = ((AspectManaged)proxied).getInstanceAdvisor();
+ assertNotNull(instanceAdvisor);
+ AspectManager instanceDomain = advisor.getManager();
+ fqn = instanceDomain.getManagerFQN();
+ AspectManager foundInstanceDomain = AspectManager.instance().findManagerByName(fqn);
+ assertSame(instanceDomain, foundInstanceDomain);
+ }
+
+}
Added: projects/aop/trunk/aop/src/test/org/jboss/test/aop/nameddomain/POJO.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/nameddomain/POJO.java 2006-10-23 18:07:08 UTC (rev 57777)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/nameddomain/POJO.java 2006-10-23 19:28:54 UTC (rev 57778)
@@ -0,0 +1,35 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.aop.nameddomain;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class POJO
+{
+ public void someMethod()
+ {
+
+ }
+}
Added: projects/aop/trunk/aop/src/test/org/jboss/test/aop/nameddomain/Proxied.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/nameddomain/Proxied.java 2006-10-23 18:07:08 UTC (rev 57777)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/nameddomain/Proxied.java 2006-10-23 19:28:54 UTC (rev 57778)
@@ -0,0 +1,35 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.aop.nameddomain;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class Proxied
+{
+ public void someMethod()
+ {
+
+ }
+}
Modified: projects/aop/trunk/aop/src/test/org/jboss/test/aop/proxy/ProxyTestCase.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/proxy/ProxyTestCase.java 2006-10-23 18:07:08 UTC (rev 57777)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/proxy/ProxyTestCase.java 2006-10-23 19:28:54 UTC (rev 57778)
@@ -153,7 +153,7 @@
public void testContainerProxy() throws Exception
{
- InstanceDomain domain = new InstanceDomain(AspectManager.instance(), false);
+ InstanceDomain domain = new InstanceDomain(AspectManager.instance(), "blah", false);
InterfaceIntroduction intro = new InterfaceIntroduction("intro", "*", null);
More information about the jboss-cvs-commits
mailing list