[jboss-cvs] JBossAS SVN: r61493 - in projects/microcontainer/trunk/aop-mc-int/src: main/org/jboss/aop/microcontainer/integration and 2 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Mar 20 10:45:51 EDT 2007
Author: kabir.khan at jboss.com
Date: 2007-03-20 10:45:51 -0400 (Tue, 20 Mar 2007)
New Revision: 61493
Added:
projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/AspectManagerFactory.java
Modified:
projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/integration/AOPConstructorJoinpoint.java
projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/integration/AOPDependencyBuilder.java
projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/ScopingAopTestCase.xml
projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/test/ScopingAopTestCase.java
Log:
Add necessary stuff to get scoped prototype working with aop
Added: projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/AspectManagerFactory.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/AspectManagerFactory.java (rev 0)
+++ projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/AspectManagerFactory.java 2007-03-20 14:45:51 UTC (rev 61493)
@@ -0,0 +1,93 @@
+/*
+* 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.aop.microcontainer.beans;
+
+import org.jboss.aop.AspectManager;
+import org.jboss.aop.Domain;
+import org.jboss.metadata.plugins.scope.ApplicationScope;
+import org.jboss.metadata.plugins.scope.DeploymentScope;
+import org.jboss.metadata.spi.MetaData;
+import org.jboss.metadata.spi.stack.MetaDataStack;
+import org.jboss.util.JBossStringBuilder;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class AspectManagerFactory
+{
+ public static AspectManager getAspectManager()
+ {
+ return getAspectManager(MetaDataStack.peek());
+ }
+
+ public static AspectManager getAspectManager(MetaData md)
+ {
+ AspectManager manager = AspectManager.instance();
+ if (md != null)
+ {
+ ApplicationScope app = md.getMetaData(ApplicationScope.class);
+ DeploymentScope dep = md.getMetaData(DeploymentScope.class);
+ if (app != null && dep != null)
+ {
+ JBossStringBuilder fqn = new JBossStringBuilder("/");
+ AspectManager sub = null;
+ if (app != null)
+ {
+ String name="APPLICATION=" + app.value();
+ fqn.append(name);
+ fqn.append("/");
+ sub = manager.findManagerByName(fqn.toString());
+ if (sub == null)
+ {
+ sub = createNewDomain(manager, name);
+ }
+ }
+
+ if (dep != null)
+ {
+ String name="DEPLOYMENT=" + dep.value();
+ fqn.append(name);
+ fqn.append("/");
+ AspectManager parent = sub;
+ sub = manager.findManagerByName(fqn.toString());
+ if (sub == null)
+ {
+ sub = createNewDomain(parent, name);
+ }
+ }
+ return sub;
+ }
+ }
+ return manager;
+ }
+
+ private static AspectManager createNewDomain(AspectManager parent, String name)
+ {
+ Domain domain = new Domain(parent, name, true);
+ domain.setInheritsBindings(true);
+ domain.setInheritsDeclarations(true);
+ return domain;
+ }
+}
+
Modified: projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/integration/AOPConstructorJoinpoint.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/integration/AOPConstructorJoinpoint.java 2007-03-20 14:41:05 UTC (rev 61492)
+++ projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/integration/AOPConstructorJoinpoint.java 2007-03-20 14:45:51 UTC (rev 61493)
@@ -29,6 +29,7 @@
import org.jboss.aop.AspectManager;
import org.jboss.aop.advice.Interceptor;
import org.jboss.aop.joinpoint.ConstructorInvocation;
+import org.jboss.aop.microcontainer.beans.AspectManagerFactory;
import org.jboss.aop.proxy.container.AOPProxyFactory;
import org.jboss.aop.proxy.container.AOPProxyFactoryParameters;
import org.jboss.aop.proxy.container.ContainerCache;
@@ -90,9 +91,9 @@
public Object dispatch() throws Throwable
{
Class clazz = constructorInfo.getDeclaringClass().getType();
- AspectManager manager = AspectManager.instance();
+ MetaData metaData = MetaDataStack.peek();
+ AspectManager manager = AspectManagerFactory.getAspectManager(metaData);
- MetaData metaData = MetaDataStack.peek();
MetaDataStack.mask();
try
{
Modified: projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/integration/AOPDependencyBuilder.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/integration/AOPDependencyBuilder.java 2007-03-20 14:41:05 UTC (rev 61492)
+++ projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/integration/AOPDependencyBuilder.java 2007-03-20 14:45:51 UTC (rev 61493)
@@ -34,8 +34,8 @@
import org.jboss.aop.AspectManager;
import org.jboss.aop.ReflectiveAspectBinder;
import org.jboss.aop.advice.AspectDefinition;
+import org.jboss.aop.microcontainer.beans.AspectManagerFactory;
import org.jboss.aop.microcontainer.beans.ManagedAspectDefinition;
-import org.jboss.aop.microcontainer.lifecycle.LifecycleCallbackBinding;
import org.jboss.aop.microcontainer.lifecycle.LifecycleCallbackDefinition;
import org.jboss.aop.proxy.container.ContainerCache;
import org.jboss.aop.util.Advisable;
@@ -43,7 +43,6 @@
import org.jboss.classadapter.plugins.dependency.AbstractDependencyBuilder;
import org.jboss.classadapter.spi.ClassAdapter;
import org.jboss.classadapter.spi.Dependency;
-import org.jboss.classadapter.spi.DependencyBuilderListItem;
import org.jboss.dependency.spi.ControllerState;
import org.jboss.metadata.spi.MetaData;
import org.jboss.metadata.spi.signature.MethodSignature;
@@ -75,7 +74,7 @@
public List<Object> getDependencies(ClassAdapter classAdapter, MetaData metaData)
{
- AspectManager manager = AspectManager.instance();
+ AspectManager manager = AspectManagerFactory.getAspectManager(metaData);
try
{
ClassInfo classInfo = classAdapter.getClassInfo();
@@ -95,7 +94,6 @@
ContainerCache cache = ContainerCache.initialise(manager, clazz, metaData, true);
advisor = cache.getAdvisor();
}
-
ReflectiveAspectBinder binder = new ReflectiveAspectBinder(clazz, advisor);
Set aspects = binder.getAspects();
Modified: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/ScopingAopTestCase.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/ScopingAopTestCase.xml 2007-03-20 14:41:05 UTC (rev 61492)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/ScopingAopTestCase.xml 2007-03-20 14:45:51 UTC (rev 61493)
@@ -1,20 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns="urn:jboss:bean-deployer:2.0">
+ <beanfactory name="InterceptedAdvice" class="org.jboss.test.microcontainer.support.CalledInterceptor"/>
-<beanfactory name="InterceptedAdvice" class="org.jboss.test.microcontainer.support.CalledInterceptor"/>
-
- <bean name="AspectManager" class="org.jboss.aop.AspectManager">
+ <bean name="AspectManager" class="org.jboss.aop.AspectManager">
+ <constructor factoryClass="org.jboss.aop.microcontainer.beans.AspectManagerFactory" factoryMethod="getAspectManager"/>
+ </bean>
+ <bean name="AspectManagerDeployment1" class="org.jboss.aop.AspectManager">
<annotation>@org.jboss.metadata.plugins.scope.ApplicationScope("testApp")</annotation>
<annotation>@org.jboss.metadata.plugins.scope.DeploymentScope("deployment1")</annotation>
- <constructor factoryClass="org.jboss.aop.AspectManager" factoryMethod="instance"/>
- </bean>
+ <constructor factoryClass="org.jboss.aop.microcontainer.beans.AspectManagerFactory" factoryMethod="getAspectManager"/>
+ </bean>
<bean name="InterceptedAspect" class="org.jboss.aop.microcontainer.beans.Aspect">
<annotation>@org.jboss.metadata.plugins.scope.ApplicationScope("testApp")</annotation>
<annotation>@org.jboss.metadata.plugins.scope.DeploymentScope("deployment1")</annotation>
<property name="advice"><inject bean="InterceptedAdvice"/></property>
- <property name="manager"><inject bean="AspectManager"/></property>
+ <property name="manager"><inject bean="AspectManagerDeployment1"/></property>
</bean>
<bean name="InterceptedBinding" class="org.jboss.aop.microcontainer.beans.AspectBinding">
@@ -22,7 +24,7 @@
<annotation>@org.jboss.metadata.plugins.scope.DeploymentScope("deployment1")</annotation>
<property name="pointcut">execution(* $instanceof{org.jboss.test.microcontainer.support.SimpleBeanImpl}->*(..))</property>
<property name="aspect"><inject bean="InterceptedAspect" property="definition"/></property>
- <property name="manager"><inject bean="AspectManager"/></property>
+ <property name="manager"><inject bean="AspectManagerDeployment1"/></property>
</bean>
<bean name="simple1" class="org.jboss.test.microcontainer.support.SimpleBeanImpl">
Modified: projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/test/ScopingAopTestCase.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/test/ScopingAopTestCase.java 2007-03-20 14:41:05 UTC (rev 61492)
+++ projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/test/ScopingAopTestCase.java 2007-03-20 14:45:51 UTC (rev 61493)
@@ -26,6 +26,7 @@
import org.jboss.aop.microcontainer.junit.AOPMicrocontainerTestDelegate;
import org.jboss.aop.microcontainer.junit.ScopingAOPMicrocontainerTestDelegate;
import org.jboss.test.AbstractTestDelegate;
+import org.jboss.test.microcontainer.support.CalledInterceptor;
import org.jboss.test.microcontainer.support.SimpleBean;
/**
@@ -65,8 +66,15 @@
{
SimpleBean simple1 = (SimpleBean)getBean("simple1");
assertNotNull(simple1);
+ CalledInterceptor.intercepted = false;
+ simple1.someMethod();
+ assertTrue(CalledInterceptor.intercepted);
+
SimpleBean simple2 = (SimpleBean)getBean("simple2");
assertNotNull(simple2);
+ CalledInterceptor.intercepted = false;
+ simple2.someMethod();
+ assertFalse(CalledInterceptor.intercepted);
}
}
More information about the jboss-cvs-commits
mailing list