Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/Advisor.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/AfterAdvice.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/AfterReturningAdvice.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/AopInvocationException.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/BeforeAdvice.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/ClassFilter.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/DynamicIntroductionAdvice.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/IntroductionAdvisor.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/IntroductionAwareMethodMatcher.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/IntroductionInfo.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/IntroductionInterceptor.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/MethodBeforeAdvice.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/MethodMatcher.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/Pointcut.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/PointcutAdvisor.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/ProxyMethodInvocation.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/RawTargetAccess.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/SpringProxy.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/TargetClassAware.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/TargetSource.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/ThrowsAdvice.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/TrueClassFilter.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/TrueMethodMatcher.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/TruePointcut.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/aspectj/AbstractAspectJAdvice.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/aspectj/AspectInstanceFactory.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/aspectj/AspectJAfterAdvice.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/aspectj/AspectJAfterReturningAdvice.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/aspectj/AspectJAfterThrowingAdvice.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/aspectj/AspectJAopUtils.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/aspectj/AspectJAroundAdvice.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/aspectj/AspectJExpressionPointcut.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/aspectj/AspectJExpressionPointcutAdvisor.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/aspectj/AspectJMethodBeforeAdvice.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/aspectj/AspectJPointcutAdvisor.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/aspectj/AspectJPrecedenceInformation.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/aspectj/AspectJProxyUtils.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/aspectj/AspectJWeaverMessageHandler.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/aspectj/DeclareParentsAdvisor.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/aspectj/InstantiationModelAwarePointcutAdvisor.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/aspectj/MethodInvocationProceedingJoinPoint.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/aspectj/RuntimeTestWalker.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/aspectj/SimpleAspectInstanceFactory.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/aspectj/SingletonAspectInstanceFactory.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/aspectj/TypePatternClassFilter.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/aspectj/annotation/AbstractAspectJAdvisorFactory.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/aspectj/annotation/AnnotationAwareAspectJAutoProxyCreator.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/aspectj/annotation/AspectJAdvisorFactory.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/aspectj/annotation/AspectJProxyFactory.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/aspectj/annotation/AspectMetadata.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/aspectj/annotation/BeanFactoryAspectInstanceFactory.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/aspectj/annotation/BeanFactoryAspectJAdvisorsBuilder.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/aspectj/annotation/InstantiationModelAwarePointcutAdvisorImpl.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/aspectj/annotation/LazySingletonAspectInstanceFactoryDecorator.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/aspectj/annotation/MetadataAwareAspectInstanceFactory.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/aspectj/annotation/NotAnAtAspectException.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/aspectj/annotation/PrototypeAspectInstanceFactory.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/aspectj/annotation/ReflectiveAspectJAdvisorFactory.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/aspectj/annotation/SimpleMetadataAwareAspectInstanceFactory.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/aspectj/annotation/SingletonMetadataAwareAspectInstanceFactory.java'.
Fisheye: No comparison available. Pass `N' to diff?
Index: 3rdParty_sources/spring/org/springframework/aop/aspectj/annotation/package-info.java
===================================================================
diff -u
--- 3rdParty_sources/spring/org/springframework/aop/aspectj/annotation/package-info.java (revision 0)
+++ 3rdParty_sources/spring/org/springframework/aop/aspectj/annotation/package-info.java (revision f7ffe05b8e0fa81c27c3e52ce296e6433706afc2)
@@ -0,0 +1,10 @@
+
+/**
+ *
+ * Classes enabling AspectJ 5 @Annotated classes to be used in Spring AOP.
+ *
+ *
Normally to be used through an AspectJAutoProxyCreator rather than directly.
+ *
+ */
+package org.springframework.aop.aspectj.annotation;
+
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/aspectj/autoproxy/AspectJAwareAdvisorAutoProxyCreator.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/aspectj/autoproxy/AspectJPrecedenceComparator.java'.
Fisheye: No comparison available. Pass `N' to diff?
Index: 3rdParty_sources/spring/org/springframework/aop/aspectj/autoproxy/package-info.java
===================================================================
diff -u
--- 3rdParty_sources/spring/org/springframework/aop/aspectj/autoproxy/package-info.java (revision 0)
+++ 3rdParty_sources/spring/org/springframework/aop/aspectj/autoproxy/package-info.java (revision f7ffe05b8e0fa81c27c3e52ce296e6433706afc2)
@@ -0,0 +1,9 @@
+
+/**
+ *
+ * Base classes enabling auto-proxying based on AspectJ.
+ * Support for AspectJ annotation aspects resides in the "aspectj.annotation" package.
+ *
+ */
+package org.springframework.aop.aspectj.autoproxy;
+
Index: 3rdParty_sources/spring/org/springframework/aop/aspectj/package-info.java
===================================================================
diff -u
--- 3rdParty_sources/spring/org/springframework/aop/aspectj/package-info.java (revision 0)
+++ 3rdParty_sources/spring/org/springframework/aop/aspectj/package-info.java (revision f7ffe05b8e0fa81c27c3e52ce296e6433706afc2)
@@ -0,0 +1,14 @@
+/**
+ *
+ * AspectJ integration package. Includes Spring AOP advice implementations for AspectJ 5
+ * annotation-style methods, and an AspectJExpressionPointcut: a Spring AOP Pointcut
+ * implementation that allows use of the AspectJ pointcut expression language with the Spring AOP
+ * runtime framework.
+ *
+ *
Note that use of this package does not require the use of the {@code ajc} compiler
+ * or AspectJ load-time weaver. It is intended to enable the use of a valuable subset of AspectJ
+ * functionality, with consistent semantics, with the proxy-based Spring AOP framework.
+ *
+ */
+package org.springframework.aop.aspectj;
+
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/config/AbstractInterceptorDrivenBeanDefinitionDecorator.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/config/AdviceEntry.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/config/AdvisorComponentDefinition.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/config/AdvisorEntry.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/config/AopConfigUtils.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/config/AopNamespaceHandler.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/config/AopNamespaceUtils.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/config/AspectComponentDefinition.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/config/AspectEntry.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/config/AspectJAutoProxyBeanDefinitionParser.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/config/ConfigBeanDefinitionParser.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/config/MethodLocatingFactoryBean.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/config/PointcutComponentDefinition.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/config/PointcutEntry.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/config/ScopedProxyBeanDefinitionDecorator.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/config/SimpleBeanFactoryAwareAspectInstanceFactory.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/config/SpringConfiguredBeanDefinitionParser.java'.
Fisheye: No comparison available. Pass `N' to diff?
Index: 3rdParty_sources/spring/org/springframework/aop/config/package-info.java
===================================================================
diff -u
--- 3rdParty_sources/spring/org/springframework/aop/config/package-info.java (revision 0)
+++ 3rdParty_sources/spring/org/springframework/aop/config/package-info.java (revision f7ffe05b8e0fa81c27c3e52ce296e6433706afc2)
@@ -0,0 +1,9 @@
+
+/**
+ *
+ * Support package for declarative AOP configuration,
+ * with XML schema being the primary configuration format.
+ *
+ */
+package org.springframework.aop.config;
+
Index: 3rdParty_sources/spring/org/springframework/aop/framework/AbstractAdvisingBeanPostProcessor.java
===================================================================
diff -u
--- 3rdParty_sources/spring/org/springframework/aop/framework/AbstractAdvisingBeanPostProcessor.java (revision 0)
+++ 3rdParty_sources/spring/org/springframework/aop/framework/AbstractAdvisingBeanPostProcessor.java (revision f7ffe05b8e0fa81c27c3e52ce296e6433706afc2)
@@ -0,0 +1,157 @@
+/*
+ * Copyright 2002-2014 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.aop.framework;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.springframework.aop.Advisor;
+import org.springframework.aop.support.AopUtils;
+import org.springframework.beans.factory.BeanClassLoaderAware;
+import org.springframework.beans.factory.config.BeanPostProcessor;
+import org.springframework.core.Ordered;
+import org.springframework.util.ClassUtils;
+
+/**
+ * Base class for {@link BeanPostProcessor} implementations that apply a
+ * Spring AOP {@link Advisor} to specific beans.
+ *
+ * @author Juergen Hoeller
+ * @since 3.2
+ */
+@SuppressWarnings("serial")
+public abstract class AbstractAdvisingBeanPostProcessor extends ProxyConfig
+ implements BeanPostProcessor, BeanClassLoaderAware, Ordered {
+
+ protected Advisor advisor;
+
+ protected boolean beforeExistingAdvisors = false;
+
+ private ClassLoader beanClassLoader = ClassUtils.getDefaultClassLoader();
+
+ /**
+ * This should run after all other post-processors, so that it can just add
+ * an advisor to existing proxies rather than double-proxy.
+ */
+ private int order = Ordered.LOWEST_PRECEDENCE;
+
+ private final Map, Boolean> eligibleBeans = new ConcurrentHashMap, Boolean>(64);
+
+
+ /**
+ * Set whether this post-processor's advisor is supposed to apply before
+ * existing advisors when encountering a pre-advised object.
+ *
Default is "false", applying the advisor after existing advisors, i.e.
+ * as close as possible to the target method. Switch this to "true" in order
+ * for this post-processor's advisor to wrap existing advisors as well.
+ *
Note: Check the concrete post-processor's javadoc whether it possibly
+ * changes this flag by default, depending on the nature of its advisor.
+ */
+ public void setBeforeExistingAdvisors(boolean beforeExistingAdvisors) {
+ this.beforeExistingAdvisors = beforeExistingAdvisors;
+ }
+
+ @Override
+ public void setBeanClassLoader(ClassLoader beanClassLoader) {
+ this.beanClassLoader = beanClassLoader;
+ }
+
+ public void setOrder(int order) {
+ this.order = order;
+ }
+
+ @Override
+ public int getOrder() {
+ return this.order;
+ }
+
+
+ @Override
+ public Object postProcessBeforeInitialization(Object bean, String beanName) {
+ return bean;
+ }
+
+ @Override
+ public Object postProcessAfterInitialization(Object bean, String beanName) {
+ if (bean instanceof AopInfrastructureBean) {
+ // Ignore AOP infrastructure such as scoped proxies.
+ return bean;
+ }
+
+ if (bean instanceof Advised) {
+ Advised advised = (Advised) bean;
+ if (!advised.isFrozen() && isEligible(AopUtils.getTargetClass(bean))) {
+ // Add our local Advisor to the existing proxy's Advisor chain...
+ if (this.beforeExistingAdvisors) {
+ advised.addAdvisor(0, this.advisor);
+ }
+ else {
+ advised.addAdvisor(this.advisor);
+ }
+ return bean;
+ }
+ }
+
+ if (isEligible(bean, beanName)) {
+ ProxyFactory proxyFactory = new ProxyFactory(bean);
+ // Copy our properties (proxyTargetClass etc) inherited from ProxyConfig.
+ proxyFactory.copyFrom(this);
+ proxyFactory.addAdvisor(this.advisor);
+ return proxyFactory.getProxy(this.beanClassLoader);
+ }
+
+ // No async proxy needed.
+ return bean;
+ }
+
+ /**
+ * Check whether the given bean is eligible for advising with this
+ * post-processor's {@link Advisor}.
+ *
Delegates to {@link #isEligible(Class)} for target class checking.
+ * Can be overridden e.g. to specifically exclude certain beans by name.
+ *
Note: Only called for regular bean instances but not for existing
+ * proxy instances which implement {@link Advised} and allow for adding
+ * the local {@link Advisor} to the existing proxy's {@link Advisor} chain.
+ * For the latter, {@link #isEligible(Class)} is being called directly,
+ * with the actual target class behind the existing proxy (as determined
+ * by {@link AopUtils#getTargetClass(Object)}).
+ * @param bean the bean instance
+ * @param beanName the name of the bean
+ * @see #isEligible(Class)
+ */
+ protected boolean isEligible(Object bean, String beanName) {
+ return isEligible(bean.getClass());
+ }
+
+ /**
+ * Check whether the given class is eligible for advising with this
+ * post-processor's {@link Advisor}.
+ *
Implements caching of {@code canApply} results per bean target class.
+ * @param targetClass the class to check against
+ * @see AopUtils#canApply(Advisor, Class)
+ */
+ protected boolean isEligible(Class> targetClass) {
+ Boolean eligible = this.eligibleBeans.get(targetClass);
+ if (eligible != null) {
+ return eligible;
+ }
+ eligible = AopUtils.canApply(this.advisor, targetClass);
+ this.eligibleBeans.put(targetClass, eligible);
+ return eligible;
+ }
+
+}
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/framework/AbstractSingletonProxyFactoryBean.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/framework/Advised.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/framework/AdvisedSupport.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/framework/AdvisedSupportListener.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/framework/AdvisorChainFactory.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/framework/AopConfigException.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/framework/AopContext.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/framework/AopInfrastructureBean.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/framework/AopProxy.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/framework/AopProxyFactory.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 2b6774d5449fee3258575f0164adf4a2056aff5a refers to a dead (removed) revision in file `3rdParty_sources/spring/org/springframework/aop/framework/AopProxyUtils.java'.
Fisheye: No comparison available. Pass `N' to diff?
Index: 3rdParty_sources/spring/org/springframework/aop/framework/CglibAopProxy.java
===================================================================
diff -u
--- 3rdParty_sources/spring/org/springframework/aop/framework/CglibAopProxy.java (revision 0)
+++ 3rdParty_sources/spring/org/springframework/aop/framework/CglibAopProxy.java (revision f7ffe05b8e0fa81c27c3e52ce296e6433706afc2)
@@ -0,0 +1,943 @@
+/*
+ * Copyright 2002-2014 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.aop.framework;
+
+import java.io.Serializable;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.lang.reflect.UndeclaredThrowableException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.WeakHashMap;
+
+import org.aopalliance.aop.Advice;
+import org.aopalliance.intercept.MethodInvocation;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import org.springframework.aop.Advisor;
+import org.springframework.aop.AopInvocationException;
+import org.springframework.aop.PointcutAdvisor;
+import org.springframework.aop.RawTargetAccess;
+import org.springframework.aop.TargetSource;
+import org.springframework.aop.support.AopUtils;
+import org.springframework.cglib.core.CodeGenerationException;
+import org.springframework.cglib.core.SpringNamingPolicy;
+import org.springframework.cglib.proxy.Callback;
+import org.springframework.cglib.proxy.CallbackFilter;
+import org.springframework.cglib.proxy.Dispatcher;
+import org.springframework.cglib.proxy.Enhancer;
+import org.springframework.cglib.proxy.Factory;
+import org.springframework.cglib.proxy.MethodInterceptor;
+import org.springframework.cglib.proxy.MethodProxy;
+import org.springframework.cglib.proxy.NoOp;
+import org.springframework.cglib.transform.impl.UndeclaredThrowableStrategy;
+import org.springframework.core.SmartClassLoader;
+import org.springframework.util.Assert;
+import org.springframework.util.ClassUtils;
+import org.springframework.util.ObjectUtils;
+
+/**
+ * CGLIB-based {@link AopProxy} implementation for the Spring AOP framework.
+ *
+ *
Formerly named {@code Cglib2AopProxy}, as of Spring 3.2, this class depends on
+ * Spring's own internally repackaged version of CGLIB 3..
+ *
+ *
Objects of this type should be obtained through proxy factories,
+ * configured by an {@link AdvisedSupport} object. This class is internal
+ * to Spring's AOP framework and need not be used directly by client code.
+ *
+ *
{@link DefaultAopProxyFactory} will automatically create CGLIB-based
+ * proxies if necessary, for example in case of proxying a target class
+ * (see the {@link DefaultAopProxyFactory attendant javadoc} for details).
+ *
+ *
Proxies created using this class are thread-safe if the underlying
+ * (target) class is thread-safe.
+ *
+ * @author Rod Johnson
+ * @author Rob Harrop
+ * @author Juergen Hoeller
+ * @author Ramnivas Laddad
+ * @author Chris Beams
+ * @author Dave Syer
+ * @see org.springframework.cglib.proxy.Enhancer
+ * @see AdvisedSupport#setProxyTargetClass
+ * @see DefaultAopProxyFactory
+ */
+@SuppressWarnings("serial")
+class CglibAopProxy implements AopProxy, Serializable {
+
+ // Constants for CGLIB callback array indices
+ private static final int AOP_PROXY = 0;
+ private static final int INVOKE_TARGET = 1;
+ private static final int NO_OVERRIDE = 2;
+ private static final int DISPATCH_TARGET = 3;
+ private static final int DISPATCH_ADVISED = 4;
+ private static final int INVOKE_EQUALS = 5;
+ private static final int INVOKE_HASHCODE = 6;
+
+
+ /** Logger available to subclasses; static to optimize serialization */
+ protected final static Log logger = LogFactory.getLog(CglibAopProxy.class);
+
+ /** Keeps track of the Classes that we have validated for final methods */
+ private static final Map, Boolean> validatedClasses = new WeakHashMap, Boolean>();
+
+
+ /** The configuration used to configure this proxy */
+ protected final AdvisedSupport advised;
+
+ private Object[] constructorArgs;
+
+ private Class>[] constructorArgTypes;
+
+ /** Dispatcher used for methods on Advised */
+ private final transient AdvisedDispatcher advisedDispatcher;
+
+ private transient Map fixedInterceptorMap;
+
+ private transient int fixedInterceptorOffset;
+
+
+ /**
+ * Create a new CglibAopProxy for the given AOP configuration.
+ * @param config the AOP configuration as AdvisedSupport object
+ * @throws AopConfigException if the config is invalid. We try to throw an informative
+ * exception in this case, rather than let a mysterious failure happen later.
+ */
+ public CglibAopProxy(AdvisedSupport config) throws AopConfigException {
+ Assert.notNull(config, "AdvisedSupport must not be null");
+ if (config.getAdvisors().length == 0 && config.getTargetSource() == AdvisedSupport.EMPTY_TARGET_SOURCE) {
+ throw new AopConfigException("No advisors and no TargetSource specified");
+ }
+ this.advised = config;
+ this.advisedDispatcher = new AdvisedDispatcher(this.advised);
+ }
+
+ /**
+ * Set constructor arguments to use for creating the proxy.
+ * @param constructorArgs the constructor argument values
+ * @param constructorArgTypes the constructor argument types
+ */
+ public void setConstructorArguments(Object[] constructorArgs, Class>[] constructorArgTypes) {
+ if (constructorArgs == null || constructorArgTypes == null) {
+ throw new IllegalArgumentException("Both 'constructorArgs' and 'constructorArgTypes' need to be specified");
+ }
+ if (constructorArgs.length != constructorArgTypes.length) {
+ throw new IllegalArgumentException("Number of 'constructorArgs' (" + constructorArgs.length +
+ ") must match number of 'constructorArgTypes' (" + constructorArgTypes.length + ")");
+ }
+ this.constructorArgs = constructorArgs;
+ this.constructorArgTypes = constructorArgTypes;
+ }
+
+
+ @Override
+ public Object getProxy() {
+ return getProxy(null);
+ }
+
+ @Override
+ public Object getProxy(ClassLoader classLoader) {
+ if (logger.isDebugEnabled()) {
+ logger.debug("Creating CGLIB proxy: target source is " + this.advised.getTargetSource());
+ }
+
+ try {
+ Class> rootClass = this.advised.getTargetClass();
+ Assert.state(rootClass != null, "Target class must be available for creating a CGLIB proxy");
+
+ Class> proxySuperClass = rootClass;
+ if (ClassUtils.isCglibProxyClass(rootClass)) {
+ proxySuperClass = rootClass.getSuperclass();
+ Class>[] additionalInterfaces = rootClass.getInterfaces();
+ for (Class> additionalInterface : additionalInterfaces) {
+ this.advised.addInterface(additionalInterface);
+ }
+ }
+
+ // Validate the class, writing log messages as necessary.
+ validateClassIfNecessary(proxySuperClass);
+
+ // Configure CGLIB Enhancer...
+ Enhancer enhancer = createEnhancer();
+ if (classLoader != null) {
+ enhancer.setClassLoader(classLoader);
+ if (classLoader instanceof SmartClassLoader &&
+ ((SmartClassLoader) classLoader).isClassReloadable(proxySuperClass)) {
+ enhancer.setUseCache(false);
+ }
+ }
+ enhancer.setSuperclass(proxySuperClass);
+ enhancer.setInterfaces(AopProxyUtils.completeProxiedInterfaces(this.advised));
+ enhancer.setNamingPolicy(SpringNamingPolicy.INSTANCE);
+ enhancer.setStrategy(new UndeclaredThrowableStrategy(UndeclaredThrowableException.class));
+
+ Callback[] callbacks = getCallbacks(rootClass);
+ Class>[] types = new Class>[callbacks.length];
+ for (int x = 0; x < types.length; x++) {
+ types[x] = callbacks[x].getClass();
+ }
+ // fixedInterceptorMap only populated at this point, after getCallbacks call above
+ enhancer.setCallbackFilter(new ProxyCallbackFilter(
+ this.advised.getConfigurationOnlyCopy(), this.fixedInterceptorMap, this.fixedInterceptorOffset));
+ enhancer.setCallbackTypes(types);
+
+ // Generate the proxy class and create a proxy instance.
+ return createProxyClassAndInstance(enhancer, callbacks);
+ }
+ catch (CodeGenerationException ex) {
+ throw new AopConfigException("Could not generate CGLIB subclass of class [" +
+ this.advised.getTargetClass() + "]: " +
+ "Common causes of this problem include using a final class or a non-visible class",
+ ex);
+ }
+ catch (IllegalArgumentException ex) {
+ throw new AopConfigException("Could not generate CGLIB subclass of class [" +
+ this.advised.getTargetClass() + "]: " +
+ "Common causes of this problem include using a final class or a non-visible class",
+ ex);
+ }
+ catch (Exception ex) {
+ // TargetSource.getTarget() failed
+ throw new AopConfigException("Unexpected AOP exception", ex);
+ }
+ }
+
+ protected Object createProxyClassAndInstance(Enhancer enhancer, Callback[] callbacks) {
+ enhancer.setInterceptDuringConstruction(false);
+ enhancer.setCallbacks(callbacks);
+ return (this.constructorArgs != null ?
+ enhancer.create(this.constructorArgTypes, this.constructorArgs) :
+ enhancer.create());
+ }
+
+ /**
+ * Creates the CGLIB {@link Enhancer}. Subclasses may wish to override this to return a custom
+ * {@link Enhancer} implementation.
+ */
+ protected Enhancer createEnhancer() {
+ return new Enhancer();
+ }
+
+ /**
+ * Checks to see whether the supplied {@code Class} has already been validated and
+ * validates it if not.
+ */
+ private void validateClassIfNecessary(Class> proxySuperClass) {
+ if (logger.isWarnEnabled()) {
+ synchronized (validatedClasses) {
+ if (!validatedClasses.containsKey(proxySuperClass)) {
+ doValidateClass(proxySuperClass);
+ validatedClasses.put(proxySuperClass, Boolean.TRUE);
+ }
+ }
+ }
+ }
+
+ /**
+ * Checks for final methods on the {@code Class} and writes warnings to the log
+ * for each one found.
+ */
+ private void doValidateClass(Class> proxySuperClass) {
+ if (logger.isWarnEnabled()) {
+ Method[] methods = proxySuperClass.getMethods();
+ for (Method method : methods) {
+ if (!Object.class.equals(method.getDeclaringClass()) && !Modifier.isStatic(method.getModifiers()) &&
+ Modifier.isFinal(method.getModifiers())) {
+ logger.warn("Unable to proxy method [" + method + "] because it is final: " +
+ "All calls to this method via a proxy will NOT be routed to the target instance.");
+ }
+ }
+ }
+ }
+
+ private Callback[] getCallbacks(Class> rootClass) throws Exception {
+ // Parameters used for optimisation choices...
+ boolean exposeProxy = this.advised.isExposeProxy();
+ boolean isFrozen = this.advised.isFrozen();
+ boolean isStatic = this.advised.getTargetSource().isStatic();
+
+ // Choose an "aop" interceptor (used for AOP calls).
+ Callback aopInterceptor = new DynamicAdvisedInterceptor(this.advised);
+
+ // Choose a "straight to target" interceptor. (used for calls that are
+ // unadvised but can return this). May be required to expose the proxy.
+ Callback targetInterceptor;
+ if (exposeProxy) {
+ targetInterceptor = isStatic ?
+ new StaticUnadvisedExposedInterceptor(this.advised.getTargetSource().getTarget()) :
+ new DynamicUnadvisedExposedInterceptor(this.advised.getTargetSource());
+ }
+ else {
+ targetInterceptor = isStatic ?
+ new StaticUnadvisedInterceptor(this.advised.getTargetSource().getTarget()) :
+ new DynamicUnadvisedInterceptor(this.advised.getTargetSource());
+ }
+
+ // Choose a "direct to target" dispatcher (used for
+ // unadvised calls to static targets that cannot return this).
+ Callback targetDispatcher = isStatic ?
+ new StaticDispatcher(this.advised.getTargetSource().getTarget()) : new SerializableNoOp();
+
+ Callback[] mainCallbacks = new Callback[]{
+ aopInterceptor, // for normal advice
+ targetInterceptor, // invoke target without considering advice, if optimized
+ new SerializableNoOp(), // no override for methods mapped to this
+ targetDispatcher, this.advisedDispatcher,
+ new EqualsInterceptor(this.advised),
+ new HashCodeInterceptor(this.advised)
+ };
+
+ Callback[] callbacks;
+
+ // If the target is a static one and the advice chain is frozen,
+ // then we can make some optimisations by sending the AOP calls
+ // direct to the target using the fixed chain for that method.
+ if (isStatic && isFrozen) {
+ Method[] methods = rootClass.getMethods();
+ Callback[] fixedCallbacks = new Callback[methods.length];
+ this.fixedInterceptorMap = new HashMap(methods.length);
+
+ // TODO: small memory optimisation here (can skip creation for methods with no advice)
+ for (int x = 0; x < methods.length; x++) {
+ List