diff --git a/org.springframework.testsuite/src/test/java/org/springframework/aop/aspectj/annotation/AspectJAdviceParameterNameDiscoverAnnotationTests.java b/org.springframework.aop/src/test/java/org/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverAnnotationTests.java similarity index 91% rename from org.springframework.testsuite/src/test/java/org/springframework/aop/aspectj/annotation/AspectJAdviceParameterNameDiscoverAnnotationTests.java rename to org.springframework.aop/src/test/java/org/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverAnnotationTests.java index 4b5048421d..523d2e8b8a 100644 --- a/org.springframework.testsuite/src/test/java/org/springframework/aop/aspectj/annotation/AspectJAdviceParameterNameDiscoverAnnotationTests.java +++ b/org.springframework.aop/src/test/java/org/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverAnnotationTests.java @@ -14,14 +14,13 @@ * limitations under the License. */ -package org.springframework.aop.aspectj.annotation; +package org.springframework.aop.aspectj; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import org.aspectj.lang.ProceedingJoinPoint; -import org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscovererTests; /** * Additional parameter name discover tests that need Java 5. diff --git a/org.springframework.testsuite/src/test/java/org/springframework/aop/aspectj/TigerAspectJAdviceParameterNameDiscovererTests.java b/org.springframework.aop/src/test/java/org/springframework/aop/aspectj/TigerAspectJAdviceParameterNameDiscovererTests.java similarity index 100% rename from org.springframework.testsuite/src/test/java/org/springframework/aop/aspectj/TigerAspectJAdviceParameterNameDiscovererTests.java rename to org.springframework.aop/src/test/java/org/springframework/aop/aspectj/TigerAspectJAdviceParameterNameDiscovererTests.java diff --git a/org.springframework.testsuite/src/test/java/org/springframework/aop/aspectj/autoproxy/AspectJNamespaceHandlerTests.java b/org.springframework.aop/src/test/java/org/springframework/aop/aspectj/autoproxy/AspectJNamespaceHandlerTests.java similarity index 100% rename from org.springframework.testsuite/src/test/java/org/springframework/aop/aspectj/autoproxy/AspectJNamespaceHandlerTests.java rename to org.springframework.aop/src/test/java/org/springframework/aop/aspectj/autoproxy/AspectJNamespaceHandlerTests.java diff --git a/org.springframework.aop/src/test/java/org/springframework/beans/factory/parsing/CollectingReaderEventListener.java b/org.springframework.aop/src/test/java/org/springframework/beans/factory/parsing/CollectingReaderEventListener.java new file mode 100644 index 0000000000..74d6b48540 --- /dev/null +++ b/org.springframework.aop/src/test/java/org/springframework/beans/factory/parsing/CollectingReaderEventListener.java @@ -0,0 +1,86 @@ +/* + * Copyright 2002-2007 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.beans.factory.parsing; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +import org.springframework.core.CollectionFactory; + +/** + * @author Rob Harrop + * @author Juergen Hoeller + */ +public class CollectingReaderEventListener implements ReaderEventListener { + + private final List defaults = new LinkedList(); + + private final Map componentDefinitions = CollectionFactory.createLinkedMapIfPossible(8); + + private final Map aliasMap = CollectionFactory.createLinkedMapIfPossible(8); + + private final List imports = new LinkedList(); + + + public void defaultsRegistered(DefaultsDefinition defaultsDefinition) { + this.defaults.add(defaultsDefinition); + } + + public List getDefaults() { + return Collections.unmodifiableList(this.defaults); + } + + public void componentRegistered(ComponentDefinition componentDefinition) { + this.componentDefinitions.put(componentDefinition.getName(), componentDefinition); + } + + public ComponentDefinition getComponentDefinition(String name) { + return (ComponentDefinition) this.componentDefinitions.get(name); + } + + public ComponentDefinition[] getComponentDefinitions() { + Collection collection = this.componentDefinitions.values(); + return (ComponentDefinition[]) collection.toArray(new ComponentDefinition[collection.size()]); + } + + public void aliasRegistered(AliasDefinition aliasDefinition) { + List aliases = (List) this.aliasMap.get(aliasDefinition.getBeanName()); + if(aliases == null) { + aliases = new ArrayList(); + this.aliasMap.put(aliasDefinition.getBeanName(), aliases); + } + aliases.add(aliasDefinition); + } + + public List getAliases(String beanName) { + List aliases = (List) this.aliasMap.get(beanName); + return aliases == null ? null : Collections.unmodifiableList(aliases); + } + + public void importProcessed(ImportDefinition importDefinition) { + this.imports.add(importDefinition); + } + + public List getImports() { + return Collections.unmodifiableList(this.imports); + } + +} diff --git a/org.springframework.testsuite/src/test/java/org/springframework/aop/aspectj/autoproxy/AspectJAutoProxyCreatorTests.java b/org.springframework.testsuite/src/test/java/org/springframework/aop/aspectj/autoproxy/AspectJAutoProxyCreatorTests.java index c2a71ada68..5f23b9bfa2 100644 --- a/org.springframework.testsuite/src/test/java/org/springframework/aop/aspectj/autoproxy/AspectJAutoProxyCreatorTests.java +++ b/org.springframework.testsuite/src/test/java/org/springframework/aop/aspectj/autoproxy/AspectJAutoProxyCreatorTests.java @@ -15,12 +15,17 @@ */ package org.springframework.aop.aspectj.autoproxy; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotSame; +import static org.junit.Assert.assertTrue; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; import org.junit.Test; -import org.springframework.aop.aspectj.annotation.AbstractAspectJAdvisorFactoryTests; import org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator; import org.springframework.aop.aspectj.annotation.AspectMetadata; import org.springframework.aop.config.AopConfigUtils; @@ -38,6 +43,7 @@ import org.springframework.beans.factory.xml.XmlBeanDefinitionReader; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.context.support.GenericApplicationContext; +import org.springframework.core.Ordered; import org.springframework.util.StopWatch; /** @@ -223,7 +229,7 @@ public class AspectJAutoProxyCreatorTests { assertEquals("Setter does not initiate advice", explicitlySetAge, adrian1.getAge()); // Fire aspect - AspectMetadata am = new AspectMetadata(AbstractAspectJAdvisorFactoryTests.PerTargetAspect.class, "someBean"); + AspectMetadata am = new AspectMetadata(PerTargetAspect.class, "someBean"); assertTrue(am.getPerClausePointcut().getMethodMatcher().matches(TestBean.class.getMethod("getSpouse"), null)); adrian1.getSpouse(); @@ -335,3 +341,31 @@ public class AspectJAutoProxyCreatorTests { } } + + +@Aspect("pertarget(execution(* *.getSpouse()))") +class PerTargetAspect implements Ordered { + + public int count; + + private int order = Ordered.LOWEST_PRECEDENCE; + + @Around("execution(int *.getAge())") + public int returnCountAsAge() { + return count++; + } + + @Before("execution(void *.set*(int))") + public void countSetter() { + ++count; + } + + public int getOrder() { + return this.order; + } + + public void setOrder(int order) { + this.order = order; + } +} +