[jboss-cvs] JBossAS SVN: r64552 - in projects/aop/trunk/aop/src: main/org/jboss/aop/advice and 6 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Aug 13 00:23:23 EDT 2007
Author: flavia.rainone at jboss.com
Date: 2007-08-13 00:23:22 -0400 (Mon, 13 Aug 2007)
New Revision: 64552
Added:
projects/aop/trunk/aop/src/main/org/jboss/aop/advice/InvalidAdviceException.java
projects/aop/trunk/aop/src/main/org/jboss/aop/advice/NoMatchingAdviceException.java
projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafter/InvalidPOJO.java
projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/ArgsInvalidPOJO.java
projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/JoinPointInvalidPOJO.java
projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/ReturnInvalidPOJO.java
projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/TargetCallerInvalidPOJO.java
projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/ThrownInvalidPOJO.java
Modified:
projects/aop/trunk/aop/src/main/org/jboss/aop/AspectXmlLoader.java
projects/aop/trunk/aop/src/main/org/jboss/aop/JoinPointInfo.java
projects/aop/trunk/aop/src/main/org/jboss/aop/advice/AdviceMethodProperties.java
projects/aop/trunk/aop/src/main/org/jboss/aop/advice/AdviceType.java
projects/aop/trunk/aop/src/main/org/jboss/aop/advice/GeneratedAdvisorInterceptor.java
projects/aop/trunk/aop/src/main/org/jboss/aop/advice/annotation/AdviceInfo.java
projects/aop/trunk/aop/src/main/org/jboss/aop/advice/annotation/AdviceMethodFactory.java
projects/aop/trunk/aop/src/main/org/jboss/aop/advice/annotation/AnnotatedParameterAdviceInfo.java
projects/aop/trunk/aop/src/main/org/jboss/aop/advice/annotation/ParameterAnnotationRule.java
projects/aop/trunk/aop/src/main/org/jboss/aop/advice/annotation/ParameterAnnotationRuleException.java
projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConByConJoinPointGenerator.java
projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConByMethodJoinPointGenerator.java
projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConstructionJoinPointGenerator.java
projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConstructorJoinPointGenerator.java
projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/FieldJoinPointGenerator.java
projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/JoinPointGenerator.java
projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodByConJoinPointGenerator.java
projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodByMethodJoinPointGenerator.java
projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodJoinPointGenerator.java
projects/aop/trunk/aop/src/resources/test/beforeafter/jboss-aop.xml
projects/aop/trunk/aop/src/resources/test/beforeafterArgs/jboss-aop.xml
projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafter/BeforeAfterThrowingTestCase.java
projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafter/POJO.java
projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/InvalidAspect.java
projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/JoinPointTestCase.java
projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/OverloadedAdviceTestCase.java
projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/OverloadedAroundCallAspect.java
projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/OverloadedBeforeCallAspect.java
projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/OverloadedFinallyAspect.java
projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/ReturnAspect.java
projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/ThrownAspect.java
Log:
[JBAOP-387] Added the whole exception scheme and splitten invalid advices from valid ones.
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/AspectXmlLoader.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/AspectXmlLoader.java 2007-08-12 18:02:41 UTC (rev 64551)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/AspectXmlLoader.java 2007-08-13 04:23:22 UTC (rev 64552)
@@ -394,7 +394,7 @@
message.append("\'\n\t\t\t\t\t should be one of: \n\t\t\t\t\t\t'interceptor\', \n\t\t\t\t\t\t'interceptor-ref\', \n\t\t\t\t\t\t'advice\', \n\t\t\t\t\t\t'");
for (AdviceType adviceType : AdviceType.values())
{
- message.append(adviceType.getDescription());
+ message.append(adviceType.getName());
message.append("\', \n\t\t\t\t\t\t'");
}
message.append("stack-ref\'.\n");
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/JoinPointInfo.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/JoinPointInfo.java 2007-08-12 18:02:41 UTC (rev 64551)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/JoinPointInfo.java 2007-08-13 04:23:22 UTC (rev 64552)
@@ -126,11 +126,6 @@
return interceptorChain;
}
- public void setInterceptorChain(ArrayList interceptorChain) {
- adviceString = null;
- this.interceptorChain = interceptorChain;
- }
-
public Interceptor[] getInterceptors() {
return interceptors;
}
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/advice/AdviceMethodProperties.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/advice/AdviceMethodProperties.java 2007-08-12 18:02:41 UTC (rev 64551)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/advice/AdviceMethodProperties.java 2007-08-13 04:23:22 UTC (rev 64552)
@@ -27,6 +27,8 @@
import javassist.CtClass;
import javassist.NotFoundException;
+import org.jboss.aop.joinpoint.JoinPointBean;
+
/** Contains the properties of an advice method that we want to find.
* Once found it is populated with the arguments
*
@@ -48,9 +50,13 @@
public static enum OptionalParameters {TARGET, TARGET_CALLER}
+ // joinpoint this properties is associated with
+ private JoinPointBean joinPoint;
+
//find properties
private Class aspectClass;
private String adviceName;
+ private Class thrownType;
private Class joinPointBeanType;
private Class invocationType;
private Type target;
@@ -68,10 +74,11 @@
private int[] args;
private boolean overloadedMethod;
-
+ // TODO remove
public AdviceMethodProperties(
- Class aspectClass,
- String adviceName,
+ JoinPointBean joinPoint,
+ Class aspectClass,
+ String adviceName,
Class joinPointBeanType,
Class invocationType,
Type joinpointReturnType,
@@ -81,6 +88,26 @@
Type target,
boolean targetAvailable)
{
+ this(joinPoint, aspectClass, adviceName, null, joinPointBeanType, invocationType,
+ joinpointReturnType, joinpointParameters, joinpointParameterClassTypes,
+ joinpointExceptions, target, targetAvailable);
+ }
+
+ public AdviceMethodProperties(
+ JoinPointBean joinPoint,
+ Class aspectClass,
+ String adviceName,
+ Class thrownType,
+ Class joinPointBeanType,
+ Class invocationType,
+ Type joinpointReturnType,
+ Type[] joinpointParameters,
+ Class[] joinpointParameterClassTypes,
+ Type[] joinpointExceptions,
+ Type target,
+ boolean targetAvailable)
+ {
+ this.joinPoint = joinPoint;
this.aspectClass = aspectClass;
this.adviceName = adviceName;
this.joinPointBeanType = joinPointBeanType;
@@ -93,10 +120,33 @@
this.targetAvailable = targetAvailable;
this.optionalParameters = OptionalParameters.TARGET;
}
+ // TODO remove
+ public AdviceMethodProperties(
+ JoinPointBean joinPoint,
+ Class aspectClass,
+ String adviceName,
+ Class joinPointBeanType,
+ Class invocationType,
+ Type joinpointReturnType,
+ Type[] joinpointParameters,
+ Class<?>[] joinpointParameterClassTypes,
+ Type[] joinpointExceptions,
+ Type target,
+ boolean targetAvailable,
+ Type caller,
+ boolean callerAvailable)
+ {
+ this (joinPoint, aspectClass, adviceName, null, joinPointBeanType, invocationType,
+ joinpointReturnType, joinpointParameters,
+ joinpointParameterClassTypes, joinpointExceptions, target,
+ targetAvailable, caller, callerAvailable);
+ }
public AdviceMethodProperties(
+ JoinPointBean joinPoint,
Class aspectClass,
String adviceName,
+ Class thrownType,
Class joinPointBeanType,
Class invocationType,
Type joinpointReturnType,
@@ -108,9 +158,9 @@
Type caller,
boolean callerAvailable)
{
- this (aspectClass, adviceName, joinPointBeanType, invocationType, joinpointReturnType,
- joinpointParameters, joinpointParameterClassTypes, joinpointExceptions, target,
- targetAvailable);
+ this (joinPoint, aspectClass, adviceName, thrownType, joinPointBeanType, invocationType,
+ joinpointReturnType, joinpointParameters,
+ joinpointParameterClassTypes, joinpointExceptions, target, targetAvailable);
this.caller = caller;
this.callerAvailable = callerAvailable;
this.optionalParameters = OptionalParameters.TARGET_CALLER;
@@ -122,6 +172,11 @@
this.args = args;
}
+ public JoinPointBean getJoinPoint()
+ {
+ return this.joinPoint;
+ }
+
public String getAdviceName()
{
return adviceName;
@@ -133,6 +188,10 @@
return aspectClass;
}
+ public Class getThrownType()
+ {
+ return this.thrownType;
+ }
public Class getJoinPointBeanType()
{
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/advice/AdviceType.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/advice/AdviceType.java 2007-08-12 18:02:41 UTC (rev 64551)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/advice/AdviceType.java 2007-08-13 04:23:22 UTC (rev 64552)
@@ -33,39 +33,43 @@
*/
public enum AdviceType
{
- BEFORE("before", AdviceMethodFactory.BEFORE, true),
- AROUND("around", AdviceMethodFactory.AROUND, false),
- AFTER("after", AdviceMethodFactory.AFTER, false),
- THROWING("throwing", AdviceMethodFactory.THROWING, false),
- FINALLY("finally", AdviceMethodFactory.FINALLY, false);
+ BEFORE("before", AdviceMethodFactory.BEFORE, true, "before"),
+ AROUND("around", AdviceMethodFactory.AROUND, false, "around"),
+ AFTER("after", AdviceMethodFactory.AFTER, false, "after"),
+ THROWING("throwing", AdviceMethodFactory.THROWING, false, "after-throwing"),
+ FINALLY("finally", AdviceMethodFactory.FINALLY, false, "finally");
+ private String name;
private String description;
private String accessor;
private AdviceMethodFactory factory;
private boolean generatedOnly;
- AdviceType(String description, AdviceMethodFactory factory, boolean generatedOnly)
+ AdviceType(String name, AdviceMethodFactory factory, boolean generatedOnly,
+ String description)
{
- this.description = description;
- this.accessor = "get" + Character.toUpperCase(description.charAt(0))
- + description.substring(1);
+ this.name = name;
+ this.accessor = "get" + Character.toUpperCase(name.charAt(0))
+ + name.substring(1);
this.factory = factory;
+ this.factory.setAdviceType(this);
this.generatedOnly = generatedOnly;
+ this.description = description;
}
/**
- * Returns a lower case description of this type.
+ * Returns a lower case name of this type.
*/
- public final String getDescription()
+ public final String getName()
{
- return this.description;
+ return this.name;
}
/**
* Returns an accessor string for this type.
*
* This accessor is built by concatenating <code>"get"</code> with the
- * the {@link #getDescription() description} starting with an upper case.
+ * the {@link #getName() description} starting with an upper case.
*
* @return an accessor string for this type.
*/
@@ -96,4 +100,14 @@
{
return this.generatedOnly;
}
+
+ /**
+ * Returns the verbose description of this type (for use on output).
+ *
+ * @return the lower-case verbose description of this type
+ */
+ public String toString()
+ {
+ return this.description;
+ }
}
\ No newline at end of file
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/advice/GeneratedAdvisorInterceptor.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/advice/GeneratedAdvisorInterceptor.java 2007-08-12 18:02:41 UTC (rev 64551)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/advice/GeneratedAdvisorInterceptor.java 2007-08-13 04:23:22 UTC (rev 64552)
@@ -508,7 +508,7 @@
GeneratedOnlyInterceptor(String name, InterceptorFactory factory)
{
this.name = name;
- logger.warn(factory.getType().getDescription() +
+ logger.warn(factory.getType().getName() +
" interceptor:s'" + name +
"' is ignored for dynamic invocation. Adding null GeneratedOnlyInterceptor in its place");
}
Added: projects/aop/trunk/aop/src/main/org/jboss/aop/advice/InvalidAdviceException.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/advice/InvalidAdviceException.java (rev 0)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/advice/InvalidAdviceException.java 2007-08-13 04:23:22 UTC (rev 64552)
@@ -0,0 +1,36 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt 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.advice;
+
+/**
+ * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ *
+ */
+public class InvalidAdviceException extends RuntimeException
+{
+ private static final long serialVersionUID = -7761721818447236098L;
+
+ public InvalidAdviceException(String message)
+ {
+ super(message);
+ }
+}
Added: projects/aop/trunk/aop/src/main/org/jboss/aop/advice/NoMatchingAdviceException.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/advice/NoMatchingAdviceException.java (rev 0)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/advice/NoMatchingAdviceException.java 2007-08-13 04:23:22 UTC (rev 64552)
@@ -0,0 +1,40 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt 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.advice;
+
+/**
+ *
+ * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ */
+public class NoMatchingAdviceException extends RuntimeException
+{
+ private static final long serialVersionUID = 2170206416883695862L;
+
+ public NoMatchingAdviceException(AdviceMethodProperties adviceProperties,
+ AdviceType adviceType, String message)
+ {
+ super("No matching " + adviceType + " advice called '" +
+ adviceProperties.getAdviceName() + "' could be found in " +
+ adviceProperties.getAspectClass().getName() + " for joinpoint " +
+ adviceProperties.getJoinPoint() + message);
+ }
+}
\ No newline at end of file
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/advice/annotation/AdviceInfo.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/advice/annotation/AdviceInfo.java 2007-08-12 18:02:41 UTC (rev 64551)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/advice/annotation/AdviceInfo.java 2007-08-13 04:23:22 UTC (rev 64552)
@@ -87,20 +87,20 @@
}
/**
- * Validate this advice, indicating whether it can be the answer to the method query
- * contained in <code>properties</code>.
+ * Matches this advice with the joinpoint to be intercepted, indicating whether it
+ * can be the answer to the method query contained in <code>properties</code>.
*
* @param properties contains information about the queried method
* @param returnType the expected return type
* @return <code>true</code> only if this advice is valid
*/
- public abstract boolean validate(AdviceMethodProperties properties,
+ public abstract boolean matches(AdviceMethodProperties properties,
ReturnType returnType);
/**
- * Resets all information that has been set during validation.
+ * Resets all information that has been set during matching.
*/
- public abstract void resetValidation();
+ public abstract void resetMatching();
/**
* Returns the distance in hierarchy between the annotated parameter identified by
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/advice/annotation/AdviceMethodFactory.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/advice/annotation/AdviceMethodFactory.java 2007-08-12 18:02:41 UTC (rev 64551)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/advice/annotation/AdviceMethodFactory.java 2007-08-13 04:23:22 UTC (rev 64552)
@@ -35,6 +35,9 @@
import org.jboss.aop.AspectManager;
import org.jboss.aop.advice.AdviceMethodProperties;
+import org.jboss.aop.advice.AdviceType;
+import org.jboss.aop.advice.InvalidAdviceException;
+import org.jboss.aop.advice.NoMatchingAdviceException;
import org.jboss.aop.advice.annotation.assignability.DegreeAlgorithm;
import org.jboss.aop.util.ReflectUtils;
@@ -105,15 +108,10 @@
// returning Object
if (method.getReturnType() != Object.class)
{
- if (AspectManager.verbose)
- {
- adviceMatchingMessage.append("\n[warn] - method ");
- adviceMatchingMessage.append(method);
- adviceMatchingMessage.append(" does not match default around signature because it returns ");
- adviceMatchingMessage.append(method.getReturnType());
- adviceMatchingMessage.append(" intead of java.lang.Object");
- }
- return false;
+ throw new InvalidAdviceException("Method '"
+ + method
+ + "' does not match default around signature because it returns "
+ + method.getReturnType() + " instead of java.lang.Object");
}
// throws Throwable
for (Class exceptionType: method.getExceptionTypes())
@@ -123,13 +121,8 @@
return true;
}
}
- if (AspectManager.verbose)
- {
- adviceMatchingMessage.append("\n[warn] - method ");
- adviceMatchingMessage.append(method);
- adviceMatchingMessage.append(" does not match default around signature because it does not throw Throwable");
- }
- return false;
+ throw new InvalidAdviceException("Method '" + method +
+ "' does not match default around signature because it does not throw java.lang.Throwable");
}
public AdviceInfo getAdviceInfo(Method method)
@@ -137,7 +130,7 @@
// creates an advice info with the greatest rank of all advices
return new AdviceInfo(method, 2000)
{
- public boolean validate(AdviceMethodProperties properties,
+ public boolean matches(AdviceMethodProperties properties,
ReturnType adviceReturn)
{
if(parameterTypes[0].isAssignableFrom(properties.getInvocationType()))
@@ -146,15 +139,13 @@
}
if (AspectManager.verbose)
{
- adviceMatchingMessage.append("\n[warn] - argument 0 of method ");
- adviceMatchingMessage.append(method);
- adviceMatchingMessage.append(" is not assignable from ");
- adviceMatchingMessage.append(properties.getInvocationType());
+ appendNewMatchingMessage(method, "argument 0 is not assignable from ");
+ appendMatchingMessage(properties.getInvocationType());
}
return false;
}
- public void resetValidation() {}
+ public void resetMatching() {}
public short getAssignabilityDegree(int typeIndex,
boolean isContextRule, AdviceMethodProperties properties)
@@ -185,21 +176,9 @@
ParameterAnnotationRule.ARGS, ParameterAnnotationRule.ARG};
static final int[][] TCA_INCOMPATIBILITY = new int[][]{{2, 3}};
- /** Stores advice matching failure messages on verbose mode. */
- static StringBuffer adviceMatchingMessage;
+ /** Stores advice matching failure messages. */
+ private static StringBuffer adviceMatchingMessage = new StringBuffer();
- /**
- * Method that returns log information about the last matching process executed.
- * Should be called only if <code>Aspect.verbose</code> is <code>true</code>.
- *
- * @return advice matching log information
- */
- public final static String getAdviceMatchingMessage()
- {
- String message = adviceMatchingMessage.toString();
- return message;
- }
-
private HashMap<String, WeakHashMap<ParameterAnnotationRule[],
Collection<AdviceInfo>>> adviceInfoCache;
@@ -207,8 +186,23 @@
private AdviceSignatureRule adviceSignatureRule;
private ParameterAnnotationRule[] rules;
private int[][] compulsory;
+ private AdviceType adviceType;
+ static <T>void appendNewMatchingMessage(Method method, T message)
+ {
+ adviceMatchingMessage.append("\n On method '");
+ adviceMatchingMessage.append(method);
+ adviceMatchingMessage.append("'\n ");
+ adviceMatchingMessage.append(message);
+ }
+ static <T>void appendMatchingMessage(T message)
+ {
+
+ adviceMatchingMessage.append(message);
+ }
+
+
/**
* Creates an advice method factory.
*
@@ -234,18 +228,33 @@
}
/**
+ * Sets the type of advice this factory represents.
+ *
+ * @param adviceType the type of the advice this factory is associated to
+ */
+ // weird code added because of mutual dependency between
+ // enums AdviceType and AdviceMethodFactory
+ // (AdviceMethodFactory needs AdviceType for outputing verbose messages)
+ public void setAdviceType(AdviceType adviceType)
+ {
+ if (this.adviceType != null)
+ {
+ throw new RuntimeException ("Unexpected call to setAdviceType method");
+ }
+ this.adviceType = adviceType;
+ }
+
+ /**
* Finds the more appropriate advice method.
*
* @param properties contains information regarding the queried advice method
- * @return a properties fullfilled with the found method information. Can be
- * <code>null</code> if no suitable method was found.
+ * @return a properties fullfilled with the found method information.
+ * @throws NoMatchingAdviceException if no suitable method was found.
*/
public final AdviceMethodProperties findAdviceMethod(AdviceMethodProperties properties)
+ throws NoMatchingAdviceException
{
- if (AspectManager.verbose)
- {
- adviceMatchingMessage = new StringBuffer();
- }
+ adviceMatchingMessage.delete(0, adviceMatchingMessage.length());
ParameterAnnotationRule[] contextRules = null;
int[][] mutuallyExclusive = null;
@@ -270,7 +279,8 @@
// no advice method following the rules was found
if (cacheCollection == null || cacheCollection.isEmpty())
{
- return null;
+ throw new NoMatchingAdviceException(properties, adviceType,
+ adviceMatchingMessage.toString());
}
synchronized(cacheCollection)
{
@@ -281,7 +291,8 @@
contextRules);
if (bestAdvice == null)
{
- return null;
+ throw new NoMatchingAdviceException(properties, adviceType,
+ adviceMatchingMessage.toString());
}
// assign best Advice info to properties
bestAdvice.assignAdviceInfo(properties);
@@ -329,7 +340,7 @@
Collection<AdviceInfo> advices = map.get(contextRules);
for(AdviceInfo adviceInfo: advices)
{
- adviceInfo.resetValidation();
+ adviceInfo.resetMatching();
}
return advices;
}
@@ -347,11 +358,9 @@
{
if (AspectManager.verbose)
{
- adviceMatchingMessage.append("\n[warn] - advice method ");
- adviceMatchingMessage.append(properties.getAspectClass());
- adviceMatchingMessage.append(".");
- adviceMatchingMessage.append(properties.getAdviceName());
- adviceMatchingMessage.append(" not found");
+ throw new NoMatchingAdviceException(properties, adviceType,
+ ": no method named " + properties.getAdviceName() +
+ " was found");
}
return null;
}
@@ -366,17 +375,10 @@
}
else
{
- try
- {
- // advice applies to annotated parameter rules
- rankedAdvices.add(new AnnotatedParameterAdviceInfo(properties,
- methods[i], rules, contextRules, mutuallyExclusive,
- compulsory));
- }catch (ParameterAnnotationRuleException pare)
- {
- // no need to print messages ->
- // exception prints automatically on verbose mode
- }
+ // advice applies to annotated parameter rules
+ rankedAdvices.add(new AnnotatedParameterAdviceInfo(properties,
+ adviceType, methods[i], rules, contextRules, mutuallyExclusive,
+ compulsory, returnType));
}
}
// sort according to rank
@@ -402,7 +404,7 @@
while (iterator.hasNext())
{
AdviceInfo advice = iterator.next();
- if (advice.validate(properties, returnType))
+ if (advice.matches(properties, returnType))
{
bestAdvice = advice;
break;
@@ -428,7 +430,7 @@
AdviceInfo advice = iterator.next();
if (advice.getRank() == bestAdvice.getRank())
{
- if (!advice.validate(properties, returnType))
+ if (!advice.matches(properties, returnType))
{
iterator.remove();
}
@@ -566,4 +568,9 @@
boolean applies(Method method);
AdviceInfo getAdviceInfo(Method method);
}
+
+ interface MatchingRule
+ {
+ boolean matches(AdviceMethodProperties p);
+ }
}
\ No newline at end of file
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/advice/annotation/AnnotatedParameterAdviceInfo.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/advice/annotation/AnnotatedParameterAdviceInfo.java 2007-08-12 18:02:41 UTC (rev 64551)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/advice/annotation/AnnotatedParameterAdviceInfo.java 2007-08-13 04:23:22 UTC (rev 64552)
@@ -4,8 +4,9 @@
import java.lang.reflect.Method;
import java.lang.reflect.Type;
-import org.jboss.aop.AspectManager;
import org.jboss.aop.advice.AdviceMethodProperties;
+import org.jboss.aop.advice.AdviceType;
+import org.jboss.aop.advice.InvalidAdviceException;
import org.jboss.aop.advice.annotation.AdviceMethodFactory.ReturnType;
import org.jboss.aop.advice.annotation.assignability.AssignabilityAlgorithm;
import org.jboss.aop.advice.annotation.assignability.VariableHierarchy;
@@ -22,14 +23,13 @@
private ParameterAnnotationType paramTypes[];
// the context dependent annotated parameter types
private ParameterAnnotationType contextParamTypes[];
- // muttually exclusive context parameter rules
- private int[][] mutuallyExclusive;
- // compusloriness rules: for each subarray, the first element is the precondition;
- // the following elements are the annotations whose use is compulsory given
- // that precondition is present among the annotated parameters
- private int[][] compulsory;
+ // the type of advice this advice info represents
+ private AdviceType adviceType;
// hierarchy of variable types
private VariableHierarchy hierarchy;
+ // indicates whether this advice mthod was considered valid during the
+ // construction of this object
+ private boolean prevalidated;
/**
* Creates an annotated parameter advice info.
@@ -49,22 +49,76 @@
* comply with a parameter annotation rule.
*/
public AnnotatedParameterAdviceInfo(AdviceMethodProperties properties,
- Method method, ParameterAnnotationRule[] rules,
+ AdviceType adviceType, Method method, ParameterAnnotationRule[] rules,
ParameterAnnotationRule[] contextRules, int[][] mutuallyExclusive,
- int[][] compulsory)
- throws ParameterAnnotationRuleException
+ int[][] compulsory, ReturnType returnType)
+ throws ParameterAnnotationRuleException, InvalidAdviceException
{
super(method, 0);
this.paramTypes = createParameterAnnotationTypes(rules);
this.contextParamTypes = createParameterAnnotationTypes(contextRules);
- this.mutuallyExclusive = mutuallyExclusive;
- this.compulsory = compulsory;
+ this.adviceType = adviceType;
this.hierarchy = new VariableHierarchy();
this.applyRules(properties);
+
+ if (returnType == ReturnType.VOID && method.getReturnType()!= void.class)
+ {
+ throw new InvalidAdviceException("The " + adviceType +
+ " advice method '" + method + "' return type must be void");
+ }
+
+ for (int i = 0; i < mutuallyExclusive.length; i++)
+ {
+ int[] exclusiveParamTypes = mutuallyExclusive[i];
+ int found = -1;
+ for (int j = 0; j < exclusiveParamTypes.length; j++)
+ {
+ if (contextParamTypes[exclusiveParamTypes[j]].isSet())
+ {
+ if (found != -1)
+ {
+ throw new InvalidAdviceException(
+ "Mutually exclusive parameter annotations '"
+ + contextParamTypes[exclusiveParamTypes[found]].rule
+ + "' and '" + contextParamTypes[exclusiveParamTypes[j]].rule
+ + "' found on " + adviceType + " advice method '" + method +
+ "'");
+ }
+ found = j;
+ }
+ }
+ }
+
+ if (compulsory != null)
+ {
+ for (int i = 0; i < compulsory.length; i++)
+ {
+ ParameterAnnotationType precondition = paramTypes[compulsory[i][0]];
+ if (precondition.isSet())
+ {
+ for (int j = 1; j < compulsory[i].length; j++)
+ {
+ if (!paramTypes[compulsory[i][j]].isSet())
+ {
+ throw new InvalidAdviceException(
+ "Compulsory " + paramTypes[compulsory[i][j]].rule
+ + "-annotated parameter not found on " + adviceType +
+ " advice method '" + method +
+ "' (this parameter is compulsory in the presence of a " +
+ precondition.rule + "-annotated parameter)");
+ }
+ }
+ }
+ }
+ }
}
- public boolean validate(AdviceMethodProperties properties, ReturnType returnType)
+ public boolean matches(AdviceMethodProperties properties, ReturnType returnType)
{
+ if (!prevalidated)
+ {
+ return false;
+ }
for (ParameterAnnotationType paramType: paramTypes)
{
if (!paramType.validate(properties))
@@ -81,97 +135,112 @@
}
}
- switch (returnType)
+ if (method.getReturnType() == void.class && returnType == ReturnType.NOT_VOID
+ && properties.getJoinpointReturnType() != void.class)
{
- case ANY:
- if (method.getReturnType() == void.class)
- {
- break;
- }
- case NOT_VOID:
- if (properties.getJoinpointReturnType() != void.class &&
- method.getReturnType() != Object.class &&
- !AssignabilityAlgorithm.FROM_VARIABLE.isAssignable(
- properties.getJoinpointReturnType(),
- method.getGenericReturnType(), hierarchy))
- {
- if (AspectManager.verbose)
- {
- AdviceMethodFactory.adviceMatchingMessage.append("\n[warn] - return value of ");
- AdviceMethodFactory.adviceMatchingMessage.append(method);
- AdviceMethodFactory.adviceMatchingMessage.append(" can not be assigned to type ");
- AdviceMethodFactory.adviceMatchingMessage.append(properties.getJoinpointReturnType());
- }
- return false;
- }
- break;
- case VOID:
- if (method.getReturnType()!= void.class)
- {
- if (AspectManager.verbose)
- {
- AdviceMethodFactory.adviceMatchingMessage.append("\n[warn] - '");
- AdviceMethodFactory.adviceMatchingMessage.append(method);
- AdviceMethodFactory.adviceMatchingMessage.append("' must return void");
- }
- return false;
- }
+ AdviceMethodFactory.appendNewMatchingMessage(method,
+ "return value cannot be void (it must match the joinpoint return type)");
+ return false;
}
-
- for (int i = 0; i < mutuallyExclusive.length; i++)
+ else if(method.getReturnType() != void.class &&
+ method.getReturnType() != Object.class &&
+ !AssignabilityAlgorithm.FROM_VARIABLE.isAssignable(
+ properties.getJoinpointReturnType(),
+ method.getGenericReturnType(), hierarchy))
{
- int[] exclusiveParamTypes = mutuallyExclusive[i];
- int found = -1;
- for (int j = 0; j < exclusiveParamTypes.length; j++)
- {
- if (contextParamTypes[exclusiveParamTypes[j]].isSet())
- {
- if (found != -1)
- {
- if (AspectManager.verbose)
- {
- AdviceMethodFactory.adviceMatchingMessage.append("\n[warn] - the use of parameter annotations ");
- AdviceMethodFactory.adviceMatchingMessage.append(contextParamTypes[exclusiveParamTypes[found]].rule.getAnnotation());
- AdviceMethodFactory.adviceMatchingMessage.append(" and ");
- AdviceMethodFactory.adviceMatchingMessage.append(contextParamTypes[exclusiveParamTypes[j]].rule.getAnnotation());
- AdviceMethodFactory.adviceMatchingMessage.append(" is mutually exclusive");
- }
- return false;
- }
- found = j;
- }
- }
+ AdviceMethodFactory.appendNewMatchingMessage(method,
+ "return value cannot be assigned to type '");
+ AdviceMethodFactory.appendMatchingMessage(properties.getJoinpointReturnType());
+ AdviceMethodFactory.appendMatchingMessage("'");
+ return false;
}
+
- if (compulsory != null)
- {
- for (int i = 0; i < compulsory.length; i++)
- {
- ParameterAnnotationType precondition = paramTypes[compulsory[i][0]];
- if (precondition.isSet())
- {
- for (int j = 1; j < compulsory[i].length; j++)
- {
- if (!paramTypes[compulsory[i][j]].isSet())
- {
- if (AspectManager.verbose)
- {
- AdviceMethodFactory.adviceMatchingMessage.append("\n[warn] - if parameter annotation ");
- AdviceMethodFactory.adviceMatchingMessage.append(precondition.rule.getAnnotation());
- AdviceMethodFactory.adviceMatchingMessage.append(" is used, the use of parameter annotation ");
- AdviceMethodFactory.adviceMatchingMessage.append(paramTypes[compulsory[i][j]].rule.getAnnotation());
- AdviceMethodFactory.adviceMatchingMessage.append(" is compulsory");
- }
- return false;
- }
- }
- }
- }
- }
+
+
+// switch (returnType)
+// {
+// case ANY:
+// if (method.getReturnType() == void.class)
+// {
+// break;
+// }
+// case NOT_VOID:
+// if (properties.getJoinpointReturnType() != void.class &&
+// method.getReturnType() != Object.class &&
+// !AssignabilityAlgorithm.FROM_VARIABLE.isAssignable(
+// properties.getJoinpointReturnType(),
+// method.getGenericReturnType(), hierarchy))
+// {
+// AdviceMethodFactory.appendNewMatchingMessage(method,
+// "return value cannot be assigned to type '");
+// AdviceMethodFactory.appendMatchingMessage(properties.getJoinpointReturnType());
+// AdviceMethodFactory.appendMatchingMessage("'");
+// return false;
+// }
+// break;
+// case VOID:
+// if (method.getReturnType()!= void.class)
+// {
+// throw new InvalidAdviceException("The " + adviceType +
+// " advice method '" + method + "' return type must be void");
+// }
+// }
+//
+// for (int i = 0; i < mutuallyExclusive.length; i++)
+// {
+// int[] exclusiveParamTypes = mutuallyExclusive[i];
+// int found = -1;
+// for (int j = 0; j < exclusiveParamTypes.length; j++)
+// {
+// if (contextParamTypes[exclusiveParamTypes[j]].isSet())
+// {
+// if (found != -1)
+// {
+// throw new InvalidAdviceException(
+// "Mutually exclusive parameter annotations '"
+// + contextParamTypes[exclusiveParamTypes[found]].rule
+// + "' and '" + contextParamTypes[exclusiveParamTypes[j]].rule
+// + "' found on " + adviceType + " advice method '" + method +
+// "'");
+// }
+// found = j;
+// }
+// }
+// }
+//
+// if (compulsory != null)
+// {
+// for (int i = 0; i < compulsory.length; i++)
+// {
+// ParameterAnnotationType precondition = paramTypes[compulsory[i][0]];
+// if (precondition.isSet())
+// {
+// for (int j = 1; j < compulsory[i].length; j++)
+// {
+// if (!paramTypes[compulsory[i][j]].isSet())
+// {
+// AdviceMethodFactory.appendNewMatchingMessage(method, "compulsory");
+// AdviceMethodFactory.appendMatchingMessage(paramTypes[compulsory[i][j]].rule);
+// AdviceMethodFactory.appendMatchingMessage("-annotated parameter not found (this parameter is compulsory in the presence of a ");
+// AdviceMethodFactory.appendMatchingMessage(precondition.rule);
+// AdviceMethodFactory.appendMatchingMessage("-annotated parameter)");
+// return false;
+//// throw new InvalidAdviceException(
+//// "Compulsory " + paramTypes[compulsory[i][j]].rule
+//// + "-annotated parameter not found on " + adviceType +
+//// " advice method '" + method +
+//// "' (this parameter is compulsory in the presence of a " +
+//// precondition.rule + "-annotated parameter)");
+// }
+// }
+// }
+// }
+// }
return true;
}
- public void resetValidation()
+ public void resetMatching()
{
for (int i = 0; i < paramTypes.length; i++)
{
@@ -259,38 +328,35 @@
{
typeFound = findAnnotationType(annotation, i);
}
- else
+ else if (findAnnotationType(annotation, i) != null)
{
- if (findAnnotationType(annotation, i) != null)
- {
- if (AspectManager.verbose)
- {
- throw new ParameterAnnotationRuleException("\n[warn] -parameter " + i +
- " of method " + method + " contains more than one valid annotation");
- }
- else
- {
- throw new ParameterAnnotationRuleException(null);
- }
- }
+ throw new ParameterAnnotationRuleException("Parameter " + i +
+ " of " + adviceType + " advice method '" + method +
+ "' contains more than one valid annotation");
}
}
if (typeFound == null)
{
- if (AspectManager.verbose)
+ if (paramAnnotations[i].length == 0)
{
- if (paramAnnotations[i].length == 0)
- {
- throw new ParameterAnnotationRuleException("\n[warn] -parameter "
- + i + " of method " + method + " is not annotated");
- }
- throw new ParameterAnnotationRuleException("\n[warn] -parameter "
- + i + " of method " + method + " is not annotated correctly" +
- "\n[warn] Expecting one of: " + getDescription(paramTypes) +
- getDescription(contextParamTypes));
+ throw new ParameterAnnotationRuleException("Parameter "
+ + i + " of " + adviceType + " advice method '" + method +
+ "' is not annotated\nFor interception of joinpoint " +
+ properties.getJoinPoint() + " expecting one of annotations: " +
+ getDescription(paramTypes) + getDescription(contextParamTypes));
}
- // no need to say the reason a rule's been broken
- throw new ParameterAnnotationRuleException(null);
+ AdviceMethodFactory.appendNewMatchingMessage(method, "parameter ");
+ AdviceMethodFactory.appendMatchingMessage(i);
+ AdviceMethodFactory.appendMatchingMessage("' is not annotated correctly. Expecting one of: ");
+ AdviceMethodFactory.appendMatchingMessage(getDescription(paramTypes));
+ AdviceMethodFactory.appendMatchingMessage(getDescription(contextParamTypes));
+// throw new ParameterAnnotationRuleException("Parameter " + i + " of " +
+// adviceType + " advice method '" + method +
+// "' is not annotated correctly\nFor interception of joinpoint " +
+// properties.getJoinPoint() + " expecting one of: " +
+// getDescription(paramTypes) + getDescription(contextParamTypes));
+ this.prevalidated = false;
+ return;
}
// this happens when target or caller are nulls
// in this case, this advice should have the smallest rank, since
@@ -301,6 +367,7 @@
{
rank = 0;
}
+ this.prevalidated = true;
}
private String getDescription(ParameterAnnotationType[] types)
@@ -309,7 +376,7 @@
for (int i = 1; i < types.length; i++)
{
buffer.append("\n ");
- buffer.append(types[i]);
+ buffer.append(types[i].rule);
}
return buffer.toString();
}
@@ -396,22 +463,16 @@
{
if (rule.isMandatory() && !isSet())
{
- if (AspectManager.verbose)
- {
- AdviceMethodFactory.adviceMatchingMessage.append("\n[warn] - mandatory parameter annotation ");
- AdviceMethodFactory.adviceMatchingMessage.append(rule.getAnnotation());
- AdviceMethodFactory.adviceMatchingMessage.append(" not found on method ");
- AdviceMethodFactory.adviceMatchingMessage.append(method);
- }
+ AdviceMethodFactory.appendNewMatchingMessage(method, "mandatory ");
+ AdviceMethodFactory.appendMatchingMessage(rule);
+ AdviceMethodFactory.appendMatchingMessage("-annotated parameter not found");
+// throw new ParameterAnnotationRuleException(
+// "Mandatory " + rule + "-annotated parameter not found on " +
+// adviceType + " advice method '" + method + "'");
return false;
}
return internalValidate(properties);
}
-
- public String toString()
- {
- return rule.getAnnotation().toString();
- }
/**
* Records that the parameter identified by <code>parameterIndex</code> is of
@@ -481,13 +542,10 @@
{
if (this.index != -1)
{
- if (AspectManager.verbose)
- {
- throw new ParameterAnnotationRuleException("\n[warn] - found more than "
- + "one occurence of " + rule.getAnnotation().getName() +
- " on parameters of advice" + method);
- }
- throw new ParameterAnnotationRuleException(null);
+ throw new ParameterAnnotationRuleException(
+ "Found more than one occurence of '"
+ + rule + "' on parameters of " + adviceType + " advice method '" +
+ method + "'");
}
this.index = parameterIndex;
rank += rule.getRankGrade();
@@ -506,15 +564,9 @@
method.getGenericParameterTypes()[index],
(Type)rule.getAssignableFrom(properties), hierarchy))
{
- if (AspectManager.verbose)
- {
- AdviceMethodFactory.adviceMatchingMessage.append("\n[warn] - parameter annotated with ");
- AdviceMethodFactory.adviceMatchingMessage.append(rule.getAnnotation());
- AdviceMethodFactory.adviceMatchingMessage.append(" is not assignable from expected type ");
- AdviceMethodFactory.adviceMatchingMessage.append(rule.getAssignableFrom(properties));
- AdviceMethodFactory.adviceMatchingMessage.append(" on method ");
- AdviceMethodFactory.adviceMatchingMessage.append(method);
- }
+ AdviceMethodFactory.appendNewMatchingMessage(method, rule);
+ AdviceMethodFactory.appendMatchingMessage("-annotated parameter is not assignable from expected type ");
+ AdviceMethodFactory.appendMatchingMessage(((Class) rule.getAssignableFrom(properties)).getName());
return false;
}
}
@@ -525,15 +577,10 @@
method.getParameterTypes()[index],
(Type)rule.getAssignableFrom(properties), hierarchy))
{
- if (AspectManager.verbose)
- {
- AdviceMethodFactory.adviceMatchingMessage.append("\n[warn] - parameter annotated with ");
- AdviceMethodFactory.adviceMatchingMessage.append(rule.getAnnotation());
- AdviceMethodFactory.adviceMatchingMessage.append(" is not assignable from expected type ");
- AdviceMethodFactory.adviceMatchingMessage.append(rule.getAssignableFrom(properties));
- AdviceMethodFactory.adviceMatchingMessage.append(" on method ");
- AdviceMethodFactory.adviceMatchingMessage.append(method);
- }
+ AdviceMethodFactory.appendNewMatchingMessage(method, rule);
+ AdviceMethodFactory.appendNewMatchingMessage(method, rule);
+ AdviceMethodFactory.appendMatchingMessage("-annotated parameter is not assignable from expected type ");
+ AdviceMethodFactory.appendMatchingMessage(((Class) rule.getAssignableFrom(properties)).getName());
return false;
}
}
@@ -572,13 +619,13 @@
private int[] originalIndexValues; // for resetting purposes
private int indexesLength;
- // maximum size is the total number of parameters
- public MultipleParameterType(ParameterAnnotationRule rule, int totalParams)
+ // maximum size is the total number of arguments
+ public MultipleParameterType(ParameterAnnotationRule rule, int totalArgs)
{
super(rule);
- this.indexes = new int[totalParams][2];
+ this.indexes = new int[totalArgs][2];
this.indexesLength = 0;
- this.originalIndexValues = new int[totalParams];
+ this.originalIndexValues = new int[totalArgs];
}
public final void setIndex(int index, Annotation annotation)
@@ -586,7 +633,9 @@
{
if (indexesLength == indexes.length)
{
- throw new ParameterAnnotationRuleException("Found more @Arg annotated parameters than the number of parameters available on joinpoint");
+ throw new RuntimeException(
+ "Unexpected call to setIndex method during processing of '" +
+ method + "'");
}
indexes[indexesLength][0] = index;
originalIndexValues[indexesLength] = ((Arg) annotation).index();
@@ -613,6 +662,21 @@
{
adviceTypes = method.getParameterTypes();
}
+ if (indexesLength > 0 && expectedTypes.length == 0)
+ {
+ AdviceMethodFactory.appendNewMatchingMessage(method, "joinpoint has no arguments; unexpected ");
+ AdviceMethodFactory.appendMatchingMessage(this.rule);
+ AdviceMethodFactory.appendMatchingMessage("-annotated parameter found");
+ return false;
+ }
+ if (indexesLength > expectedTypes.length)
+ {
+ AdviceMethodFactory.appendNewMatchingMessage(method, "found more ");
+ AdviceMethodFactory.appendMatchingMessage(this.rule);
+ AdviceMethodFactory.appendMatchingMessage("-annotated parameters than the number of arguments available on the joinpoint");
+ return false;
+ }
+
boolean[] taken = new boolean[expectedTypes.length];
for (int i = 0; i < indexesLength; i++)
{
@@ -622,23 +686,19 @@
// negative index
if (indexes[i][1] < 0)
{
- if (AspectManager.verbose)
- {
- AdviceMethodFactory.adviceMatchingMessage.append("\n[warn] - Negative joinpoint parameter indexes are not allowed.");
- }
- return false;
+ throw new ParameterAnnotationRuleException(
+ "Negative joinpoint parameter index found at method '" +
+ method + "'");
}
// wrong index
if (indexes[i][1] >= expectedTypes.length)
{
- if (AspectManager.verbose)
- {
- AdviceMethodFactory.adviceMatchingMessage.append("\n[warn] - There is no joinpoint parameter with index ");
- AdviceMethodFactory.adviceMatchingMessage.append(indexes[i][1]);
- AdviceMethodFactory.adviceMatchingMessage.append(", since there are ");
- AdviceMethodFactory.adviceMatchingMessage.append(expectedTypes.length == 0? "no": expectedTypes.length);
- AdviceMethodFactory.adviceMatchingMessage.append("joinpoint parameters available");
- }
+ AdviceMethodFactory.appendNewMatchingMessage(method,
+ "there is no joinpoint argument with index ");
+ AdviceMethodFactory.appendMatchingMessage(indexes[i][1]);
+ AdviceMethodFactory.appendMatchingMessage(", since there are ");
+ AdviceMethodFactory.appendMatchingMessage(expectedTypes.length == 0? "no": expectedTypes.length);
+ AdviceMethodFactory.appendMatchingMessage(" joinpoint arguments available");
return false;
}
// wrong type
@@ -646,29 +706,24 @@
adviceTypes[indexes[i][0]], expectedTypes[indexes[i][1]],
hierarchy))
{
- if (AspectManager.verbose)
- {
- AdviceMethodFactory.adviceMatchingMessage.append("\n[warn] - Advice parameter ");
- AdviceMethodFactory.adviceMatchingMessage.append(indexes[i][0]);
- AdviceMethodFactory.adviceMatchingMessage.append(", of type ");
- AdviceMethodFactory.adviceMatchingMessage.append(adviceTypes[indexes[i][0]]);
- AdviceMethodFactory.adviceMatchingMessage.append(", cannot be assigned to the value of joinpoint parameter with index ");
- AdviceMethodFactory.adviceMatchingMessage.append(indexes[i][1]);
- AdviceMethodFactory.adviceMatchingMessage.append(", whose type is ");
- AdviceMethodFactory.adviceMatchingMessage.append(expectedTypes[indexes[i][1]]);
- }
+ AdviceMethodFactory.appendNewMatchingMessage(method, "advice parameter ");
+ AdviceMethodFactory.appendMatchingMessage(indexes[i][0]);
+ AdviceMethodFactory.appendMatchingMessage(", of type '");
+ AdviceMethodFactory.appendMatchingMessage(adviceTypes[indexes[i][0]]);
+ AdviceMethodFactory.appendMatchingMessage("', cannot be assigned to the value of joinpoint argument with index ");
+ AdviceMethodFactory.appendMatchingMessage(indexes[i][1] + ", whose type is '");
+ AdviceMethodFactory.appendMatchingMessage(expectedTypes[indexes[i][1]]);
+ AdviceMethodFactory.appendMatchingMessage("'");
return false;
}
// index set more than once
if (taken[indexes[i][1]])
{
- if (AspectManager.verbose)
- {
- AdviceMethodFactory.adviceMatchingMessage.append("\n[warn] - Joinpoint parameter index '");
- AdviceMethodFactory.adviceMatchingMessage.append(indexes[i][0]);
- AdviceMethodFactory.adviceMatchingMessage.append("' cannot be assigned to more than one '@Arg' advice parameter");
- }
- return false;
+ throw new ParameterAnnotationRuleException(
+ "Joinpoint parameter index '" + indexes[i][0] +
+ "' cannot be assigned to more than one " + rule +
+ "-annotated advice parameter (on " + adviceType +
+ " advice method '" + method + "')");
}
// mark index as set
taken[indexes[i][1]] = true;
@@ -709,17 +764,16 @@
}
if (!found)
{
- if (AspectManager.verbose)
+ AdviceMethodFactory.appendNewMatchingMessage(method,
+ "not found a match for argument ");
+ AdviceMethodFactory.appendMatchingMessage(adviceTypes[indexes[i][0]]);
+ AdviceMethodFactory.appendMatchingMessage("; expected one of types: ");
+ for (int j = 0; j < expectedTypes.length; j++)
{
- AdviceMethodFactory.adviceMatchingMessage.append("\n[warn] - not found a match for argument ");
- AdviceMethodFactory.adviceMatchingMessage.append(adviceTypes[indexes[i][0]]);
- AdviceMethodFactory.adviceMatchingMessage.append(" of ");
- AdviceMethodFactory.adviceMatchingMessage.append(method);
- AdviceMethodFactory.adviceMatchingMessage.append("\n[warn] expected one of types:");
- for (int j = 0; j < expectedTypes.length; j++)
+ if (!taken[j])
{
- AdviceMethodFactory.adviceMatchingMessage.append(expectedTypes[j]);
- AdviceMethodFactory.adviceMatchingMessage.append(" ");
+ AdviceMethodFactory.appendMatchingMessage(expectedTypes[j]);
+ AdviceMethodFactory.appendMatchingMessage(" ");
}
}
return false;
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/advice/annotation/ParameterAnnotationRule.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/advice/annotation/ParameterAnnotationRule.java 2007-08-12 18:02:41 UTC (rev 64551)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/advice/annotation/ParameterAnnotationRule.java 2007-08-13 04:23:22 UTC (rev 64552)
@@ -232,4 +232,9 @@
{
return singleEnforced;
}
+
+ public String toString()
+ {
+ return "@" + annotation.getSimpleName();
+ }
}
\ No newline at end of file
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/advice/annotation/ParameterAnnotationRuleException.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/advice/annotation/ParameterAnnotationRuleException.java 2007-08-12 18:02:41 UTC (rev 64551)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/advice/annotation/ParameterAnnotationRuleException.java 2007-08-13 04:23:22 UTC (rev 64552)
@@ -1,31 +1,24 @@
package org.jboss.aop.advice.annotation;
-import org.jboss.aop.AspectManager;
+import org.jboss.aop.advice.InvalidAdviceException;
/**
* Exception thrown when an advice method does not comply with a parameter rule.
*
* @author Flavia Rainone
*/
-class ParameterAnnotationRuleException extends Exception
+class ParameterAnnotationRuleException extends InvalidAdviceException
{
- private static final long serialVersionUID = 1L;
-
+ private static final long serialVersionUID = 9190978361997650638L;
+
/**
* Constructor.
* <p>
- * Adds <code>errorMessage</code> to {@link AdviceMethodFactory#adviceMatchingMessage}
- * on verbose mode.
- *
* @param message a message describing why the parameter annotation rule could
* not be applied to an advice method
*/
public ParameterAnnotationRuleException(String message)
{
super(message);
- if (AspectManager.verbose)
- {
- AdviceMethodFactory.adviceMatchingMessage.append(message);
- }
}
}
\ No newline at end of file
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConByConJoinPointGenerator.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConByConJoinPointGenerator.java 2007-08-12 18:02:41 UTC (rev 64551)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConByConJoinPointGenerator.java 2007-08-13 04:23:22 UTC (rev 64552)
@@ -68,14 +68,14 @@
}
}
- private WeakReference returnType;
+ private WeakReference<Class<?>> returnType;
public ConByConJoinPointGenerator(GeneratedClassAdvisor advisor, JoinPointInfo info)
{
super(advisor, info, JoinPointParameters.CALLER_ARGS,
((ConByConInfo) info).getConstructor().getParameterTypes().length,
false);
- returnType = new WeakReference(((ConByConInfo)info).getCalledClass());
+ returnType = new WeakReference<Class<?>>(((ConByConInfo)info).getCalledClass());
}
protected void initialiseJoinPointNames(JoinPointInfo info)
@@ -116,7 +116,7 @@
protected Class getReturnClassType()
{
- return (Class)returnType.get();
+ return returnType.get();
}
protected AdviceMethodProperties getAdviceMethodProperties(JoinPointBean joinPoint, AdviceSetup setup)
@@ -124,6 +124,7 @@
ConstructorCallByConstructor call = (ConstructorCallByConstructor) joinPoint;
Constructor ctor = call.getConstructor();
AdviceMethodProperties properties = new AdviceMethodProperties(
+ joinPoint,
setup.getAspectClass(),
setup.getAdviceName(),
JOINPOINT_TYPE,
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConByMethodJoinPointGenerator.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConByMethodJoinPointGenerator.java 2007-08-12 18:02:41 UTC (rev 64551)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConByMethodJoinPointGenerator.java 2007-08-13 04:23:22 UTC (rev 64552)
@@ -68,7 +68,7 @@
}
private boolean hasCallingObject;
- private WeakReference returnType;
+ private WeakReference<Class<?>> returnType;
public ConByMethodJoinPointGenerator(GeneratedClassAdvisor advisor, JoinPointInfo info)
{
@@ -76,7 +76,7 @@
((ConByMethodInfo) info).getConstructor().getParameterTypes().length,
false);
hasCallingObject = !java.lang.reflect.Modifier.isStatic(((ConByMethodInfo)info).getCallingMethod().getModifiers());
- returnType = new WeakReference(((ConByMethodInfo)info).getCalledClass());
+ returnType = new WeakReference<Class<?>>(((ConByMethodInfo)info).getCalledClass());
}
private static JoinPointParameters getParameters(ConByMethodInfo info)
@@ -125,7 +125,7 @@
protected Class getReturnClassType()
{
- return (Class)returnType.get();
+ return returnType.get();
}
protected AdviceMethodProperties getAdviceMethodProperties(JoinPointBean joinPoint, AdviceSetup setup)
@@ -133,6 +133,7 @@
ConstructorCallByMethod call = (ConstructorCallByMethod) joinPoint;
Constructor ctor = call.getConstructor();
AdviceMethodProperties properties = new AdviceMethodProperties(
+ joinPoint,
setup.getAspectClass(),
setup.getAdviceName(),
JOINPOINT_TYPE,
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConstructionJoinPointGenerator.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConstructionJoinPointGenerator.java 2007-08-12 18:02:41 UTC (rev 64551)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConstructionJoinPointGenerator.java 2007-08-13 04:23:22 UTC (rev 64552)
@@ -113,6 +113,7 @@
{
Constructor ctor = ((Construction)joinPoint).getConstructor();
return new AdviceMethodProperties(
+ joinPoint,
setup.getAspectClass(),
setup.getAdviceName(),
JOINPOINT_TYPE,
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConstructorJoinPointGenerator.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConstructorJoinPointGenerator.java 2007-08-12 18:02:41 UTC (rev 64551)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConstructorJoinPointGenerator.java 2007-08-13 04:23:22 UTC (rev 64552)
@@ -68,14 +68,14 @@
}
}
- WeakReference returnType;
+ WeakReference<Class<?>> returnType;
public ConstructorJoinPointGenerator(GeneratedClassAdvisor advisor, JoinPointInfo info)
{
super(advisor, info, JoinPointParameters.ONLY_ARGS,
((ConstructorInfo) info).getConstructor().getParameterTypes().length,
false);
- returnType = new WeakReference(((ConstructorInfo)info).getConstructor().getDeclaringClass());
+ returnType = new WeakReference<Class<?>>(((ConstructorInfo)info).getConstructor().getDeclaringClass());
}
@@ -109,13 +109,14 @@
protected Class getReturnClassType()
{
- return (Class)returnType.get();
+ return returnType.get();
}
protected AdviceMethodProperties getAdviceMethodProperties(JoinPointBean joinPoint, AdviceSetup setup)
{
Constructor ctor = ((ConstructorExecution)joinPoint).getConstructor();
return new AdviceMethodProperties(
+ joinPoint,
setup.getAspectClass(),
setup.getAdviceName(),
JOINPOINT_TYPE,
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/FieldJoinPointGenerator.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/FieldJoinPointGenerator.java 2007-08-12 18:02:41 UTC (rev 64551)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/FieldJoinPointGenerator.java 2007-08-13 04:23:22 UTC (rev 64552)
@@ -88,8 +88,8 @@
if (((FieldInfo)info).isRead())
{
read = true;
- returnClassType = new WeakReference(((FieldInfo)info).getField().getType());
- returnType = new WeakReference(((FieldInfo)info).getField().getGenericType());
+ returnClassType = new WeakReference<Class<?>>(((FieldInfo)info).getField().getType());
+ returnType = new WeakReference<Type>(((FieldInfo)info).getField().getGenericType());
}
hasTargetObject = !Modifier.isStatic(((FieldInfo)info).getField().getModifiers());
}
@@ -137,16 +137,17 @@
FieldAccess fieldAccess = (FieldAccess)joinPoint;
Field field = fieldAccess.getField();
return new AdviceMethodProperties(
- setup.getAspectClass(),
- setup.getAdviceName(),
- JOINPOINT_TYPE,
- (fieldAccess.isRead()) ? READ_INVOCATION_TYPE : WRITE_INVOCATION_TYPE,
- (fieldAccess.isRead()) ? field.getGenericType() : Void.TYPE,
- (fieldAccess.isRead()) ? new Type[] {} : new Type[] {field.getGenericType()},
- (fieldAccess.isRead()) ? new Class[] {} : new Class[] {field.getType()},
- null,
- field.getDeclaringClass(),
- hasTargetObject());
+ joinPoint,
+ setup.getAspectClass(),
+ setup.getAdviceName(),
+ JOINPOINT_TYPE,
+ (fieldAccess.isRead()) ? READ_INVOCATION_TYPE : WRITE_INVOCATION_TYPE,
+ (fieldAccess.isRead()) ? field.getGenericType() : Void.TYPE,
+ (fieldAccess.isRead()) ? new Type[] {} : new Type[] {field.getGenericType()},
+ (fieldAccess.isRead()) ? new Class[] {} : new Class[] {field.getType()},
+ null,
+ field.getDeclaringClass(),
+ hasTargetObject());
}
// protected CtClass[] getJoinpointParameters() throws NotFoundException
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/JoinPointGenerator.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/JoinPointGenerator.java 2007-08-12 18:02:41 UTC (rev 64551)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/JoinPointGenerator.java 2007-08-13 04:23:22 UTC (rev 64552)
@@ -52,8 +52,9 @@
import org.jboss.aop.advice.AdviceMethodProperties;
import org.jboss.aop.advice.AdviceType;
import org.jboss.aop.advice.GeneratedAdvisorInterceptor;
+import org.jboss.aop.advice.InvalidAdviceException;
+import org.jboss.aop.advice.NoMatchingAdviceException;
import org.jboss.aop.advice.Scope;
-import org.jboss.aop.advice.annotation.AdviceMethodFactory;
import org.jboss.aop.joinpoint.Invocation;
import org.jboss.aop.joinpoint.JoinPointBean;
import org.jboss.aop.pointcut.ast.ASTCFlowExpression;
@@ -290,10 +291,16 @@
initialised = true;
return obj;
}
+ catch (NoMatchingAdviceException e)
+ {
+ throw e;
+ }
+ catch (InvalidAdviceException e)
+ {
+ throw e;
+ }
catch (Throwable e)
{
- e.printStackTrace();
- // AutoGenerated
throw new RuntimeException("Error generating joinpoint class for joinpoint " + info, e);
}
}
@@ -1308,6 +1315,7 @@
Class aspectClass;
CtClass aspectCtClass;
String adviceName;
+ Class thrownType;
Scope scope;
String registeredName;
String cflowString;
@@ -1373,7 +1381,7 @@
String getAspectFieldName()
{
StringBuffer name = new StringBuffer();
- name.append(type.getDescription());
+ name.append(type.getName());
name.append(index + 1);
return name.toString();
}
@@ -1499,39 +1507,30 @@
properties = type.getFactory().findAdviceMethod(properties);
- if (properties != null)
- {
- allSetups[i].setAdviceMethodProperties(properties);
- aspects[index].add(allSetups[i]);
+ allSetups[i].setAdviceMethodProperties(properties);
+ aspects[index].add(allSetups[i]);
- if (AdviceType.AROUND == type)
+ if (AdviceType.AROUND == type)
+ {
+ hasAroundAdvices = true;
+ if (!hasArgsAroundAdvices)
{
- hasAroundAdvices = true;
- if (!hasArgsAroundAdvices)
+ if (!hasInvocation(properties))
{
- if (!hasInvocation(properties))
- {
- hasArgsAroundAdvices = true;
- }
+ hasArgsAroundAdvices = true;
}
-
}
- else if (allSetups[i].requiresInstanceAdvisor())
+
+ }
+ else if (allSetups[i].requiresInstanceAdvisor())
+ {
+ //We are not an around advice and we require an instance advisor
+ if (lightweightAdvicesRequiringInstanceAdvisor == null)
{
- //We are not an around advice and we require an instance advisor
- if (lightweightAdvicesRequiringInstanceAdvisor == null)
- {
- lightweightAdvicesRequiringInstanceAdvisor = new ArrayList<AdviceSetup>();
- }
- lightweightAdvicesRequiringInstanceAdvisor.add(allSetups[i]);
+ lightweightAdvicesRequiringInstanceAdvisor = new ArrayList<AdviceSetup>();
}
+ lightweightAdvicesRequiringInstanceAdvisor.add(allSetups[i]);
}
- else if (AspectManager.verbose)
- {
- logger.warn("No matching advice called '" + allSetups[i].getAdviceName() +
- "' could be found in " + allSetups[i].getAspectClass().getName() +
- " for joinpoint " + info + ":" + AdviceMethodFactory.getAdviceMatchingMessage());
- }
}
this.setups = new AdviceSetup[length][];
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodByConJoinPointGenerator.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodByConJoinPointGenerator.java 2007-08-12 18:02:41 UTC (rev 64551)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodByConJoinPointGenerator.java 2007-08-13 04:23:22 UTC (rev 64552)
@@ -64,7 +64,7 @@
}
boolean hasTargetObject;
- WeakReference returnType;
+ WeakReference<Class<?>> returnType;
public MethodByConJoinPointGenerator(GeneratedClassAdvisor advisor, JoinPointInfo info)
{
@@ -72,7 +72,7 @@
((MethodByConInfo) info).getMethod().getParameterTypes().length, false);
if (!((MethodByConInfo)info).getMethod().getReturnType().equals(Void.TYPE))
{
- returnType = new WeakReference(((MethodByConInfo)info).getMethod().getReturnType());
+ returnType = new WeakReference<Class<?>>(((MethodByConInfo)info).getMethod().getReturnType());
}
hasTargetObject = !java.lang.reflect.Modifier.isStatic(((MethodByConInfo)info).getMethod().getModifiers());
}
@@ -127,25 +127,26 @@
{
return null;
}
- return (Class)returnType.get();
+ return returnType.get();
}
protected AdviceMethodProperties getAdviceMethodProperties(JoinPointBean joinPoint, AdviceSetup setup)
{
Method method = ((MethodCallByConstructor)joinPoint).getMethod();
return new AdviceMethodProperties(
- setup.getAspectClass(),
- setup.getAdviceName(),
- JOINPOINT_TYPE,
- INVOCATION_TYPE,
- method.getGenericReturnType(),
- method.getGenericParameterTypes(),
- method.getParameterTypes(),
- method.getGenericExceptionTypes(),
- method.getDeclaringClass(),
- hasTargetObject(),
- ((MethodCallByConstructor) joinPoint).getCallingClass(),
- hasCallingObject());
+ joinPoint,
+ setup.getAspectClass(),
+ setup.getAdviceName(),
+ JOINPOINT_TYPE,
+ INVOCATION_TYPE,
+ method.getGenericReturnType(),
+ method.getGenericParameterTypes(),
+ method.getParameterTypes(),
+ method.getGenericExceptionTypes(),
+ method.getDeclaringClass(),
+ hasTargetObject(),
+ ((MethodCallByConstructor) joinPoint).getCallingClass(),
+ hasCallingObject());
}
protected boolean isCaller()
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodByMethodJoinPointGenerator.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodByMethodJoinPointGenerator.java 2007-08-12 18:02:41 UTC (rev 64551)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodByMethodJoinPointGenerator.java 2007-08-13 04:23:22 UTC (rev 64552)
@@ -62,7 +62,7 @@
}
}
- WeakReference returnType;
+ WeakReference<Class<?>> returnType;
boolean hasCallingObject;
boolean hasTargetObject;
@@ -73,7 +73,7 @@
if (!((MethodByMethodInfo)info).getMethod().getReturnType().equals(Void.TYPE))
{
- returnType = new WeakReference(((MethodByMethodInfo)info).getMethod().getReturnType());
+ returnType = new WeakReference<Class<?>>(((MethodByMethodInfo)info).getMethod().getReturnType());
}
hasCallingObject = !java.lang.reflect.Modifier.isStatic(((MethodByMethodInfo)info).getCallingMethod().getModifiers());
hasTargetObject = !java.lang.reflect.Modifier.isStatic(((MethodByMethodInfo)info).getMethod().getModifiers());
@@ -136,25 +136,26 @@
{
return null;
}
- return (Class)returnType.get();
+ return returnType.get();
}
protected AdviceMethodProperties getAdviceMethodProperties(JoinPointBean joinPoint, AdviceSetup setup)
{
Method method = ((MethodCallByMethod)joinPoint).getMethod();
return new AdviceMethodProperties(
- setup.getAspectClass(),
- setup.getAdviceName(),
- JOINPOINT_TYPE,
- INVOCATION_TYPE,
- method.getGenericReturnType(),
- method.getGenericParameterTypes(),
- method.getParameterTypes(),
- method.getGenericExceptionTypes(),
- method.getDeclaringClass(),
- hasTargetObject(),
- ((MethodCallByMethod) joinPoint).getCallingClass(),
- hasCallingObject());
+ joinPoint,
+ setup.getAspectClass(),
+ setup.getAdviceName(),
+ JOINPOINT_TYPE,
+ INVOCATION_TYPE,
+ method.getGenericReturnType(),
+ method.getGenericParameterTypes(),
+ method.getParameterTypes(),
+ method.getGenericExceptionTypes(),
+ method.getDeclaringClass(),
+ hasTargetObject(),
+ ((MethodCallByMethod) joinPoint).getCallingClass(),
+ hasCallingObject());
}
protected boolean isCaller()
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodJoinPointGenerator.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodJoinPointGenerator.java 2007-08-12 18:02:41 UTC (rev 64551)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodJoinPointGenerator.java 2007-08-13 04:23:22 UTC (rev 64552)
@@ -66,7 +66,7 @@
}
}
- WeakReference returnType;
+ WeakReference<Class<?>> returnType;
boolean hasTargetObject;
public MethodJoinPointGenerator(GeneratedClassAdvisor advisor, MethodInfo info)
@@ -75,7 +75,7 @@
info.getMethod().getParameterTypes().length, false);
if (!info.getUnadvisedMethod().getReturnType().equals(Void.TYPE))
{
- returnType = new WeakReference(info.getUnadvisedMethod().getReturnType());
+ returnType = new WeakReference<Class<?>>(info.getUnadvisedMethod().getReturnType());
}
hasTargetObject = !Modifier.isStatic(info.getMethod().getModifiers());
}
@@ -122,23 +122,24 @@
{
return null;
}
- return (Class)returnType.get();
+ return returnType.get();
}
protected AdviceMethodProperties getAdviceMethodProperties(JoinPointBean joinPoint, AdviceSetup setup)
{
Method method = ((MethodExecution)joinPoint).getMethod();
return new AdviceMethodProperties(
- setup.getAspectClass(),
- setup.getAdviceName(),
- JOINPOINT_TYPE,
- INVOCATION_TYPE,
- method.getGenericReturnType(),
- method.getGenericParameterTypes(),
- method.getParameterTypes(),
- method.getGenericExceptionTypes(),
- method.getDeclaringClass(),
- hasTargetObject());
+ joinPoint,
+ setup.getAspectClass(),
+ setup.getAdviceName(),
+ JOINPOINT_TYPE,
+ INVOCATION_TYPE,
+ method.getGenericReturnType(),
+ method.getGenericParameterTypes(),
+ method.getParameterTypes(),
+ method.getGenericExceptionTypes(),
+ method.getDeclaringClass(),
+ hasTargetObject());
}
Modified: projects/aop/trunk/aop/src/resources/test/beforeafter/jboss-aop.xml
===================================================================
--- projects/aop/trunk/aop/src/resources/test/beforeafter/jboss-aop.xml 2007-08-12 18:02:41 UTC (rev 64551)
+++ projects/aop/trunk/aop/src/resources/test/beforeafter/jboss-aop.xml 2007-08-13 04:23:22 UTC (rev 64552)
@@ -24,13 +24,65 @@
<before name="before" aspect="org.jboss.test.aop.beforeafter.ArgsAspect"/>
<after name="after" aspect="org.jboss.test.aop.beforeafter.ArgsAspect"/>
<throwing name="throwing" aspect="org.jboss.test.aop.beforeafter.ArgsAspect"/>
- <throwing name="throwingzzz" aspect="org.jboss.test.aop.beforeafter.ArgsAspect"/>
</stack>
- <bind pointcut="execution(org.jboss.test.aop.beforeafter.POJO->new(..)) OR execution(* org.jboss.test.aop.beforeafter.POJO->method*(..)) OR field(!static * org.jboss.test.aop.beforeafter.POJO->*)">
+ <bind pointcut="(execution(org.jboss.test.aop.beforeafter.POJO->new(boolean, int, long, java.lang.String)) AND ! execution(org.jboss.test.aop.beforeafter.POJO->new())) OR (execution(* org.jboss.test.aop.beforeafter.POJO->method*(..)) AND !execution(* *->method*(boolean)) AND !execution(int *->*(..)) AND !execution(* *->*(*SubValue,int))) OR (get(!static * org.jboss.test.aop.beforeafter.POJO->*) AND !get(int *->*) AND !field(*Value *->*))">
<stack-ref name="argsStack"/>
</bind>
+ <bind pointcut="set(!static * org.jboss.test.aop.beforeafter.POJO->*) AND !field(*Value *->*)">
+ <before name="before" aspect="org.jboss.test.aop.beforeafter.ArgsAspect"/>
+ <throwing name="throwing" aspect="org.jboss.test.aop.beforeafter.ArgsAspect"/>
+ </bind>
+
+ <bind pointcut="execution(int org.jboss.test.aop.beforeafter.POJO->method*(..)) OR execution(* org.jboss.test.aop.beforeafter.POJO->method*(*SubValue, int))">
+ <throwing name="throwing" aspect="org.jboss.test.aop.beforeafter.ArgsAspect"/>
+ </bind>
+
+ <bind pointcut="get(int org.jboss.test.aop.beforeafter.POJO->*) OR field(*Value org.jboss.test.aop.beforeafter.POJO->*) OR execution(* org.jboss.test.aop.beforeafter.POJO->method*(*SubValue, int))">
+ <before name="before" aspect="org.jboss.test.aop.beforeafter.ArgsAspect"/>
+ </bind>
+
+ <bind pointcut="get(!static *Value org.jboss.test.aop.beforeafter.POJO->*)">
+ <after name="after" aspect="org.jboss.test.aop.beforeafter.ArgsAspect"/>
+ </bind>
+
+ <bind pointcut="execution(org.jboss.test.aop.beforeafter.InvalidPOJO->new())">
+ <before name="before" aspect="org.jboss.test.aop.beforeafter.ArgsAspect"/>
+ </bind>
+
+ <bind pointcut="execution(org.jboss.test.aop.beforeafter.InvalidPOJO->new(short))">
+ <after name="after" aspect="org.jboss.test.aop.beforeafter.ArgsAspect"/>
+ </bind>
+
+ <bind pointcut="execution(org.jboss.test.aop.beforeafter.InvalidPOJO->new(long))">
+ <throwing name="throwing" aspect="org.jboss.test.aop.beforeafter.ArgsAspect"/>
+ </bind>
+
+ <bind pointcut="execution(void org.jboss.test.aop.beforeafter.InvalidPOJO->methodBefore(..))">
+ <before name="before" aspect="org.jboss.test.aop.beforeafter.ArgsAspect"/>
+ </bind>
+
+ <bind pointcut="execution(void org.jboss.test.aop.beforeafter.InvalidPOJO->methodAfter(..))">
+ <after name="after" aspect="org.jboss.test.aop.beforeafter.ArgsAspect"/>
+ </bind>
+
+ <bind pointcut="all(org.jboss.test.aop.beforeafter.InvalidAdviceNamePOJO)">
+ <throwing name="throwingzzz" aspect="org.jboss.test.aop.beforeafter.ArgsAspect"/>
+ </bind>
+
+ <bind pointcut="field(int org.jboss.test.aop.beforeafter.InvalidPOJO->i)">
+ <after name="after" aspect="org.jboss.test.aop.beforeafter.ArgsAspect"/>
+ </bind>
+
+ <bind pointcut="field(!static *SuperValue org.jboss.test.aop.beforeafter.InvalidPOJO->*)">
+ <throwing name="throwing" aspect="org.jboss.test.aop.beforeafter.ArgsAspect"/>
+ </bind>
+
+ <bind pointcut="set(!static *Value org.jboss.test.aop.beforeafter.InvalidPOJO->*)">
+ <after name="after" aspect="org.jboss.test.aop.beforeafter.ArgsAspect"/>
+ </bind>
+
<bind pointcut="execution(org.jboss.test.aop.beforeafter.POJO->new($instanceof{org.jboss.test.aop.beforeafter.SuperValue}, int)) OR execution(* org.jboss.test.aop.beforeafter.POJO->method($instanceof{org.jboss.test.aop.beforeafter.SuperValue}, int))">
<before name="before" aspect="org.jboss.test.aop.beforeafter.GeneralAspect"/>
<after name="after" aspect="org.jboss.test.aop.beforeafter.GeneralAspect"/>
Modified: projects/aop/trunk/aop/src/resources/test/beforeafterArgs/jboss-aop.xml
===================================================================
--- projects/aop/trunk/aop/src/resources/test/beforeafterArgs/jboss-aop.xml 2007-08-12 18:02:41 UTC (rev 64551)
+++ projects/aop/trunk/aop/src/resources/test/beforeafterArgs/jboss-aop.xml 2007-08-13 04:23:22 UTC (rev 64552)
@@ -12,107 +12,134 @@
<before name="before3" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<before name="before4" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<before name="before5" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
+ <around name="around4" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
+ <around name="around5" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
+ <after name="after1" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
+ <after name="after4" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
+ </bind>
+
+ <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ArgsInvalidPOJO->bunch1(..))">
<around name="around1" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<around name="around2" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<around name="around3" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
- <around name="around4" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
- <around name="around5" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
- <after name="after1" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<after name="after2" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<after name="after3" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
- <after name="after4" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<after name="after5" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
</bind>
<bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ArgsPOJO->bunch2(..))">
<before name="before1" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<before name="before2" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
- <before name="before3" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<before name="before4" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<before name="before5" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<around name="around6" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
+ <after name="after4" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
+ <after name="after6" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
+ <finally name="finally1" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
+ </bind>
+
+ <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ArgsInvalidPOJO->bunch2(..))">
+ <before name="before3" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<after name="after1" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<after name="after2" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<after name="after3" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
- <after name="after4" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<after name="after5" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
- <after name="after6" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
- <finally name="finally1" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
</bind>
<bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ArgsPOJO->bunch3(..))">
<before name="before1" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<before name="before2" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
- <before name="before3" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<before name="before4" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<before name="before5" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
+ <after name="after4" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
+ <after name="after6" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
+ <finally name="finally2" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
+ </bind>
+
+ <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ArgsInvalidPOJO->bunch3(..))">
+ <before name="before3" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<after name="after1" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<after name="after2" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<after name="after3" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
- <after name="after4" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<after name="after5" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
- <after name="after6" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
- <finally name="finally2" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
</bind>
<bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ArgsPOJO->bunch4(..))">
<before name="before1" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<before name="before2" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
- <before name="before3" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<before name="before4" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<before name="before5" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<around name="around6" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
</bind>
+
+ <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ArgsInvalidPOJO->bunch4(..))">
+ <before name="before3" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
+ </bind>
<bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ArgsPOJO->bunch5(..))">
<before name="before1" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<before name="before2" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
- <before name="before3" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<before name="before4" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<before name="before5" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
</bind>
+ <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ArgsInvalidPOJO->bunch5(..))">
+ <before name="before3" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
+ </bind>
+
<bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ArgsPOJO->bunch6(..))">
<around name="around6" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
+ <after name="after4" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
+ <after name="after6" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
+ </bind>
+
+ <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ArgsInvalidPOJO->bunch6(..))">
<after name="after1" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<after name="after2" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<after name="after3" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
- <after name="after4" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<after name="after5" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
- <after name="after6" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
</bind>
<bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ArgsPOJO->bunch7(..))">
<around name="around6" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
- <after name="after1" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
- <after name="after2" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
- <after name="after3" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<after name="after4" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
- <after name="after5" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<after name="after6" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<finally name="finally1" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<finally name="finally2" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
</bind>
- <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ArgsPOJO->bunch8(..))">
+ <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ArgsInvalidPOJO->bunch7(..))">
<after name="after1" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<after name="after2" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<after name="after3" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
+ <after name="after5" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
+ </bind>
+
+ <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ArgsPOJO->bunch8(..))">
<after name="after4" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
- <after name="after5" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<after name="after6" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
</bind>
- <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ArgsPOJO->bunch9(..))">
+ <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ArgsInvalidPOJO->bunch8(..))">
<after name="after1" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<after name="after2" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<after name="after3" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
+ <after name="after5" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
+ </bind>
+
+ <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ArgsPOJO->bunch9(..))">
<after name="after4" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
- <after name="after5" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<after name="after6" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<finally name="finally1" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
<finally name="finally2" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
</bind>
+
+ <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ArgsInvalidPOJO->bunch9(..))">
+ <after name="after1" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
+ <after name="after2" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
+ <after name="after3" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
+ <after name="after5" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspect"/>
+ </bind>
<aspect class="org.jboss.test.aop.beforeafterArgs.ArgAspectInterfaces" scope="PER_VM"/>
@@ -120,26 +147,29 @@
<before name="before1" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInterfaces"/>
<before name="before2" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInterfaces"/>
<before name="before3" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInterfaces"/>
- <before name="before4" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInterfaces"/>
- <before name="before5" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInterfaces"/>
<around name="around1" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInterfaces"/>
<around name="around2" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInterfaces"/>
<around name="around3" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInterfaces"/>
- <around name="around4" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInterfaces"/>
- <around name="around5" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInterfaces"/>
<after name="after1" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInterfaces"/>
<after name="after2" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInterfaces"/>
<after name="after3" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInterfaces"/>
- <after name="after4" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInterfaces"/>
- <after name="after5" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInterfaces"/>
<throwing name="throwing1" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInterfaces"/>
<throwing name="throwing2" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInterfaces"/>
<throwing name="throwing3" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInterfaces"/>
- <throwing name="throwing4" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInterfaces"/>
- <throwing name="throwing5" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInterfaces"/>
<finally name="finally1" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInterfaces"/>
<finally name="finally2" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInterfaces"/>
<finally name="finally3" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInterfaces"/>
+ </bind>
+
+ <bind pointcut="execution(void org.jboss.test.aop.beforeafterArgs.ArgsInvalidPOJO->*(org.jboss.test.aop.beforeafterArgs.Interface))">
+ <before name="before4" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInterfaces"/>
+ <before name="before5" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInterfaces"/>
+ <around name="around4" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInterfaces"/>
+ <around name="around5" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInterfaces"/>
+ <after name="after4" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInterfaces"/>
+ <after name="after5" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInterfaces"/>
+ <throwing name="throwing4" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInterfaces"/>
+ <throwing name="throwing5" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInterfaces"/>
<finally name="finally4" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInterfaces"/>
<finally name="finally5" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInterfaces"/>
</bind>
@@ -148,14 +178,17 @@
<bind pointcut="execution(void org.jboss.test.aop.beforeafterArgs.ArgsPOJO->*(java.lang.String,java.util.Collection))">
<before name="before1" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInvertedArgs"/>
+ <around name="around1" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInvertedArgs"/>
+ <after name="after1" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInvertedArgs"/>
+ <throwing name="throwing1" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInvertedArgs"/>
+ <finally name="finally1" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInvertedArgs"/>
+ </bind>
+
+ <bind pointcut="execution(void org.jboss.test.aop.beforeafterArgs.ArgsInvalidPOJO->*(java.lang.String,java.util.Collection))">
<before name="before2" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInvertedArgs"/>
- <around name="around1" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInvertedArgs"/>
<around name="around2" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInvertedArgs"/>
- <after name="after1" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInvertedArgs"/>
<after name="after2" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInvertedArgs"/>
- <throwing name="throwing1" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInvertedArgs"/>
<throwing name="throwing2" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInvertedArgs"/>
- <finally name="finally1" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInvertedArgs"/>
<finally name="finally2" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectInvertedArgs"/>
</bind>
@@ -167,38 +200,41 @@
<before name="before4" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
<before name="before5" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
<before name="before6" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
- <before name="before7" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
- <before name="before8" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
<around name="around1" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
<around name="around2" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
<around name="around3" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
<around name="around4" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
- <around name="around5" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
<around name="around6" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
- <around name="around7" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
- <around name="around8" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
<after name="after1" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
<after name="after2" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
<after name="after3" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
<after name="after4" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
- <after name="after5" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
<after name="after6" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
- <after name="after7" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
- <after name="after8" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
<throwing name="throwing1" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
- <throwing name="throwing2" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
<throwing name="throwing3" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
<throwing name="throwing4" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
<throwing name="throwing5" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
<throwing name="throwing6" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
- <throwing name="throwing7" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
- <throwing name="throwing8" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
<finally name="finally1" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
<finally name="finally2" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
<finally name="finally3" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
<finally name="finally4" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
+ <finally name="finally6" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
+ </bind>
+
+ <bind pointcut="execution(void org.jboss.test.aop.beforeafterArgs.ArgsInvalidPOJO->*(java.util.List))">
+ <before name="before7" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
+ <before name="before8" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
+ <around name="around5" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
+ <around name="around7" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
+ <around name="around8" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
+ <after name="after5" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
+ <after name="after7" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
+ <after name="after8" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
+ <throwing name="throwing2" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
+ <throwing name="throwing7" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
+ <throwing name="throwing8" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
<finally name="finally5" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
- <finally name="finally6" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
<finally name="finally7" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
<finally name="finally8" aspect="org.jboss.test.aop.beforeafterArgs.ArgAspectGenerics"/>
</bind>
@@ -210,40 +246,52 @@
<before name="before1" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
<before name="before2" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
<before name="before3" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
+ </bind>
+
+ <bind pointcut="field(* org.jboss.test.aop.beforeafterArgs.ArgsInvalidPOJO->field1)">
<before name="before4" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
<before name="before5" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
</bind>
<bind pointcut="set(* org.jboss.test.aop.beforeafterArgs.ArgsPOJO->field2)">
<before name="before6" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
- <before name="XXX6" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
<after name="after6" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
- <finally name="finally2" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
<finally name="finally3" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
</bind>
+
+ <bind pointcut="set(* org.jboss.test.aop.beforeafterArgs.ArgsInvalidPOJO->field2)">
+ <before name="XXX6" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
+ <finally name="finally2" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
+ </bind>
<bind pointcut="field(* org.jboss.test.aop.beforeafterArgs.ArgsPOJO->field3)">
<around name="around3" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
<after name="after1" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
- <after name="after2" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
+ <after name="after2" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
<after name="after3" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
- <after name="after4" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
+ </bind>
+
+ <bind pointcut="field(* org.jboss.test.aop.beforeafterArgs.ArgsInvalidPOJO->field3)">
+ <after name="after4" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
<after name="after5" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
</bind>
<bind pointcut="field(* org.jboss.test.aop.beforeafterArgs.ArgsPOJO->field4)">
<before name="before1" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
- <before name="before2" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
+ <before name="before2" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
<before name="before3" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
- <before name="before4" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
- <before name="before5" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
<around name="around3" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
<after name="after1" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
- <after name="after2" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
+ <after name="after2" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
<after name="after3" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
+ <finally name="finally1" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
+ </bind>
+
+ <bind pointcut="field(* org.jboss.test.aop.beforeafterArgs.ArgsInvalidPOJO->field4)">
+ <before name="before4" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
+ <before name="before5" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
<after name="after4" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
<after name="after5" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
- <finally name="finally1" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
<finally name="finally2" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
</bind>
@@ -258,9 +306,12 @@
<after name="after3" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
<throwing name="throwing" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
<finally name="finally1" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
- <finally name="finally2" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
</bind>
+ <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ArgsInvalidPOJO->method2(..))">
+ <finally name="finally2" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
+ </bind>
+
<bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ArgsPOJO->method3(..))">
<before name="before7" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
<around name="around1" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
@@ -272,16 +323,22 @@
<around name="around1" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
<after name="after7" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
<finally name="finally1" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
- <finally name="finally2" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
</bind>
- <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ArgsPOJO->method5(..))">
+ <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ArgsInvalidPOJO->method4(..))">
+ <finally name="finally2" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
+ </bind>
+
+ <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ArgsPOJO->method5(..))">
<throwing name="throwing" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
</bind>
<bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ArgsPOJO->method6(..))">
<throwing name="throwing" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
<finally name="finally1" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
+ </bind>
+
+ <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ArgsInvalidPOJO->method6(..))">
<finally name="finally2" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
</bind>
@@ -298,6 +355,9 @@
<after name="after8" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
<throwing name="throwing" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
<finally name="finally1" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
+ </bind>
+
+ <bind pointcut="call(* org.jboss.test.aop.beforeafterArgs.ArgsInvalidPOJO->method6(..)) AND withincode(* org.jboss.test.aop.beforeafterArgs.ArgsInvalidPOJO->method8(..))">
<finally name="finally2" aspect="org.jboss.test.aop.beforeafterArgs.ArgsAspect"/>
</bind>
@@ -306,40 +366,108 @@
<stack name="CallerAdvices">
<before name="before1" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <around name="around1" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <after name="after1" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <throwing name="throwing1" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <finally name="finally2" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ </stack>
+
+ <bind pointcut="call(org.jboss.test.aop.beforeafterArgs.TargetCallerPOJO2->new(int,..))">
+ <stack-ref name="CallerAdvices"/>
<before name="before2" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
<before name="before3" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <around name="around2" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <around name="around4" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <after name="after2" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <throwing name="throwing3" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <finally name="finally1" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <finally name="finally4" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ </bind>
+
+ <bind pointcut="call(org.jboss.test.aop.beforeafterArgs.TargetCallerInvalidPOJO2->new(int,..))">
<before name="before4" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
- <around name="around1" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <around name="around3" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <after name="after3" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <throwing name="throwing2" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <finally name="finally3" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ </bind>
+
+ <bind pointcut="call(void org.jboss.test.aop.beforeafterArgs.TargetCallerPOJO2->*()) AND !call(* *->method*_())">
+ <stack-ref name="CallerAdvices"/>
+ <before name="before2" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <before name="before3" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <before name="before4" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
<around name="around2" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
<around name="around3" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
<around name="around4" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
- <after name="after1" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
<after name="after2" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
<after name="after3" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
- <throwing name="throwing1" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
<throwing name="throwing2" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
<throwing name="throwing3" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
<finally name="finally1" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
- <finally name="finally2" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
<finally name="finally3" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
<finally name="finally4" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
- </stack>
-
- <bind pointcut="call(org.jboss.test.aop.beforeafterArgs.TargetCallerPOJO2->new(int,..))">
- <stack-ref name="CallerAdvices"/>
</bind>
- <bind pointcut="call(void org.jboss.test.aop.beforeafterArgs.TargetCallerPOJO2->*())">
- <stack-ref name="CallerAdvices"/>
+ <bind pointcut="call(void org.jboss.test.aop.beforeafterArgs.TargetCallerPOJO2->method*_())">
+ <stack-ref name="CallerAdvices"/>
+ <before name="before2" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <before name="before3" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <around name="around2" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <around name="around4" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <after name="after2" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <throwing name="throwing3" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <finally name="finally1" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <finally name="finally4" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
</bind>
+ <bind pointcut="call(void org.jboss.test.aop.beforeafterArgs.TargetCallerInvalidPOJO2->method*_())">
+ <before name="before4" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <around name="around3" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <after name="after3" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <throwing name="throwing2" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <finally name="finally3" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ </bind>
+
<bind pointcut="execution(public void org.jboss.test.aop.beforeafterArgs.TargetCallerPOJO->method1())">
- <stack-ref name="CallerAdvices"/>
+ <stack-ref name="CallerAdvices"/>
</bind>
+ <bind pointcut="execution(public void org.jboss.test.aop.beforeafterArgs.TargetCallerInvalidPOJO->method1())">
+ <before name="before2" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <before name="before3" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <before name="before4" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <around name="around2" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <around name="around3" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <around name="around4" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <after name="after2" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <after name="after3" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <throwing name="throwing2" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <throwing name="throwing3" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <finally name="finally1" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <finally name="finally3" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <finally name="finally4" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ </bind>
+
<bind pointcut="execution(public void org.jboss.test.aop.beforeafterArgs.TargetCallerPOJO->method3())">
- <stack-ref name="CallerAdvices"/>
+ <stack-ref name="CallerAdvices"/>
</bind>
+
+ <bind pointcut="execution(public void org.jboss.test.aop.beforeafterArgs.TargetCallerInvalidPOJO->method3())">
+ <before name="before2" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <before name="before3" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <before name="before4" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <around name="around2" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <around name="around3" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <around name="around4" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <after name="after2" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <after name="after3" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <throwing name="throwing2" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <throwing name="throwing3" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <finally name="finally1" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <finally name="finally3" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ <finally name="finally4" aspect="org.jboss.test.aop.beforeafterArgs.CallerAspect"/>
+ </bind>
<!-- @JoinPoint test -->
<aspect class="org.jboss.test.aop.beforeafterArgs.JoinPointAspect" scope="PER_VM"/>
@@ -347,27 +475,39 @@
<bind pointcut="field(* org.jboss.test.aop.beforeafterArgs.JoinPointPOJO->number)">
<before name="before1" aspect="org.jboss.test.aop.beforeafterArgs.JoinPointAspect"/>
<after name="after1" aspect="org.jboss.test.aop.beforeafterArgs.JoinPointAspect"/>
+ </bind>
+
+ <bind pointcut="field(* org.jboss.test.aop.beforeafterArgs.JoinPointInvalidPOJO->number)">
<before name="before9" aspect="org.jboss.test.aop.beforeafterArgs.JoinPointAspect"/>
</bind>
-
+
<bind pointcut="set(* org.jboss.test.aop.beforeafterArgs.JoinPointPOJO->text)">
<before name="before2" aspect="org.jboss.test.aop.beforeafterArgs.JoinPointAspect"/>
+ <finally name="finally1" aspect="org.jboss.test.aop.beforeafterArgs.JoinPointAspect"/>
+ </bind>
+
+ <bind pointcut="set(* org.jboss.test.aop.beforeafterArgs.JoinPointInvalidPOJO->text)">
<after name="after2" aspect="org.jboss.test.aop.beforeafterArgs.JoinPointAspect"/>
- <finally name="finally1" aspect="org.jboss.test.aop.beforeafterArgs.JoinPointAspect"/>
<after name="after8" aspect="org.jboss.test.aop.beforeafterArgs.JoinPointAspect"/>
</bind>
-
+
<bind pointcut="get(* org.jboss.test.aop.beforeafterArgs.JoinPointPOJO->text)">
- <before name="before5" aspect="org.jboss.test.aop.beforeafterArgs.JoinPointAspect"/>
<after name="after5" aspect="org.jboss.test.aop.beforeafterArgs.JoinPointAspect"/>
</bind>
+ <bind pointcut="get(* org.jboss.test.aop.beforeafterArgs.JoinPointInvalidPOJO->text)">
+ <before name="before5" aspect="org.jboss.test.aop.beforeafterArgs.JoinPointAspect"/>
+ </bind>
+
<bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.JoinPointPOJO->method1(..))">
<before name="before3" aspect="org.jboss.test.aop.beforeafterArgs.JoinPointAspect"/>
<after name="after3" aspect="org.jboss.test.aop.beforeafterArgs.JoinPointAspect"/>
- <finally name="finally9" aspect="org.jboss.test.aop.beforeafterArgs.JoinPointAspect"/>
</bind>
+ <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.JoinPointInvalidPOJO->method1(..))">
+= <finally name="finally9" aspect="org.jboss.test.aop.beforeafterArgs.JoinPointAspect"/>
+ </bind>
+
<bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.JoinPointPOJO->method2(..))">
<before name="before4" aspect="org.jboss.test.aop.beforeafterArgs.JoinPointAspect"/>
<after name="after4" aspect="org.jboss.test.aop.beforeafterArgs.JoinPointAspect"/>
@@ -377,10 +517,13 @@
<bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.JoinPointPOJO->method3(..))">
<before name="before4" aspect="org.jboss.test.aop.beforeafterArgs.JoinPointAspect"/>
<after name="after4" aspect="org.jboss.test.aop.beforeafterArgs.JoinPointAspect"/>
- <throwing name="throwing2" aspect="org.jboss.test.aop.beforeafterArgs.JoinPointAspect"/>
<finally name="finally2" aspect="org.jboss.test.aop.beforeafterArgs.JoinPointAspect"/>
</bind>
+ <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.JoinPointInvalidPOJO->method3(..))">
+ <throwing name="throwing2" aspect="org.jboss.test.aop.beforeafterArgs.JoinPointAspect"/>
+ </bind>
+
<bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.JoinPointPOJO->method4(..))">
<throwing name="throwing3" aspect="org.jboss.test.aop.beforeafterArgs.JoinPointAspect"/>
<finally name="finally3" aspect="org.jboss.test.aop.beforeafterArgs.JoinPointAspect"/>
@@ -388,9 +531,12 @@
<bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.JoinPointPOJO->method5(..))">
<throwing name="throwing4" aspect="org.jboss.test.aop.beforeafterArgs.JoinPointAspect"/>
+ </bind>
+
+ <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.JoinPointInvalidPOJO->method5(..))">
<finally name="finally4" aspect="org.jboss.test.aop.beforeafterArgs.JoinPointAspect"/>
</bind>
-
+
<bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.JoinPointPOJO->method6(..))">
<throwing name="throwing5" aspect="org.jboss.test.aop.beforeafterArgs.JoinPointAspect"/>
</bind>
@@ -407,6 +553,9 @@
<after name="after5" aspect="org.jboss.test.aop.beforeafterArgs.JoinPointAspect"/>
<throwing name="throwing7" aspect="org.jboss.test.aop.beforeafterArgs.JoinPointAspect"/>
<finally name="finally6" aspect="org.jboss.test.aop.beforeafterArgs.JoinPointAspect"/>
+ </bind>
+
+ <bind pointcut="call(org.jboss.test.aop.beforeafterArgs.JoinPointInvalidPOJO->new(boolean)) AND withincode(public void org.jboss.test.aop.beforeafterArgs.JoinPointInvalidPOJO->*(..))">
<throwing name="throwing9" aspect="org.jboss.test.aop.beforeafterArgs.JoinPointAspect"/>
<throwing name="throwing10" aspect="org.jboss.test.aop.beforeafterArgs.JoinPointAspect"/>
</bind>
@@ -416,6 +565,9 @@
<after name="after6" aspect="org.jboss.test.aop.beforeafterArgs.JoinPointAspect"/>
<throwing name="throwing8" aspect="org.jboss.test.aop.beforeafterArgs.JoinPointAspect"/>
<finally name="finally3" aspect="org.jboss.test.aop.beforeafterArgs.JoinPointAspect"/>
+ </bind>
+
+ <bind pointcut="call(* org.jboss.test.aop.beforeafterArgs.JoinPointInvalidPOJO->*Method(boolean)) AND withincode(org.jboss.test.aop.beforeafterArgs.JoinPointInvalidPOJO->new(..))">
<throwing name="throwing9" aspect="org.jboss.test.aop.beforeafterArgs.JoinPointAspect"/>
<throwing name="throwing10" aspect="org.jboss.test.aop.beforeafterArgs.JoinPointAspect"/>
</bind>
@@ -445,25 +597,32 @@
<aspect class="org.jboss.test.aop.beforeafterArgs.ReturnAspect" scope="PER_VM"/>
<bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ReturnPOJO->method1(..))">
- <before name="before" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
- <around name="around1" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
<after name="after1" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
<finally name="finally1" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
</bind>
+ <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ReturnInvalidPOJO->method1(..))">
+ <before name="before" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
+ </bind>
+
<bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ReturnPOJO->method2(..))">
- <around name="around2" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
<after name="after2" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
- <finally name="finally2" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
</bind>
+ <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ReturnInvalidPOJO->method2(..))">
+ <around name="around2" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
+ </bind>
+
<bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ReturnPOJO->method3(..))">
- <before name="before" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
<around name="around3" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
<after name="after3" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
<finally name="finally3" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
</bind>
+ <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ReturnInvalidPOJO->method3(..))">
+ <before name="before" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
+ </bind>
+
<bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ReturnPOJO->method4(..))">
<around name="around4" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
<after name="after4" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
@@ -473,15 +632,21 @@
<bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ReturnPOJO->method5(..))">
<around name="around5" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
<after name="after5" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
+ </bind>
+
+ <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ReturnInvalidPOJO->method5(..))">
<finally name="finally5" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
</bind>
-
+
<bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ReturnPOJO->method6(..))">
- <around name="around6" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
<after name="after6" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
<finally name="finally6" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
</bind>
+ <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ReturnInvalidPOJO->method6(..))">
+ <around name="around6" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
+ </bind>
+
<bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ReturnPOJO->method7(..))">
<around name="around7" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
<after name="after7" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
@@ -489,24 +654,33 @@
</bind>
<bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ReturnPOJO->method8(..))">
- <before name="before" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
<around name="around8" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
<after name="after8" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
<finally name="finally8" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
</bind>
+
+ <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ReturnInvalidPOJO->method8(..))">
+ <before name="before" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
+ </bind>
<bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ReturnPOJO->method9(..))">
+ </bind>
+
+ <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ReturnInvalidPOJO->method9(..))">
<around name="around9" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
<after name="after9" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
<finally name="finally9" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
- </bind>
-
+ </bind>
+
<bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ReturnPOJO->method10(..))">
- <before name="before" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
<around name="around10" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
- <after name="after10" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
<finally name="finally10" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
</bind>
+
+ <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ReturnInvalidPOJO->method10(..))">
+ <before name="before" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
+ <after name="after10" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
+ </bind>
<bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ReturnPOJO->method11(..))">
<around name="around11" aspect="org.jboss.test.aop.beforeafterArgs.ReturnAspect"/>
@@ -532,87 +706,158 @@
<stack name="TargetAdvices">
<before name="before1" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
<before name="before2" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
- <before name="before3" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
<around name="around1" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
<around name="around2" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
- <around name="around3" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
<after name="after1" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
<after name="after2" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
<throwing name="throwing1" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
<throwing name="throwing2" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
- <throwing name="throwing3" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
<finally name="finally1" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
<finally name="finally2" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
- <finally name="finally3" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
</stack>
<bind pointcut="execution(org.jboss.test.aop.beforeafterArgs.TargetCallerPOJO->new(int,..))">
<stack-ref name="TargetAdvices"/>
</bind>
+ <bind pointcut="execution(org.jboss.test.aop.beforeafterArgs.TargetCallerInvalidPOJO->new(int,..))">
+ <before name="before3" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
+ <around name="around3" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
+ <throwing name="throwing3" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
+ <finally name="finally3" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
+ </bind>
+
<bind pointcut="field(int org.jboss.test.aop.beforeafterArgs.TargetCallerPOJO->*)">
<stack-ref name="TargetAdvices"/>
</bind>
+ <bind pointcut="field(int org.jboss.test.aop.beforeafterArgs.TargetCallerInvalidPOJO->*)">
+ <before name="before3" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
+ <around name="around3" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
+ <throwing name="throwing3" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
+ <finally name="finally3" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
+ </bind>
+
<bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.TargetCallerPOJO->method1(..))">
<stack-ref name="TargetAdvices"/>
</bind>
+
+ <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.TargetCallerInvalidPOJO->method1(..))">
+ <before name="before3" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
+ <around name="around3" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
+ <throwing name="throwing3" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
+ <finally name="finally3" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
+ </bind>
<bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.TargetCallerPOJO->method2(..))">
<stack-ref name="TargetAdvices"/>
</bind>
+ <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.TargetCallerInvalidPOJO->method2(..))">
+ <before name="before3" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
+ <around name="around3" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
+ <throwing name="throwing3" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
+ <finally name="finally3" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
+ </bind>
+
<bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.TargetCallerPOJO->method3(..))">
<stack-ref name="TargetAdvices"/>
</bind>
+ <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.TargetCallerInvalidPOJO->method3(..))">
+ <before name="before3" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
+ <around name="around3" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
+ <throwing name="throwing3" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
+ <finally name="finally3" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
+ </bind>
+
<bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.TargetCallerPOJO->method4(..))">
<stack-ref name="TargetAdvices"/>
</bind>
+ <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.TargetCallerInvalidPOJO->method4(..))">
+ <before name="before3" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
+ <around name="around3" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
+ <throwing name="throwing3" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
+ <finally name="finally3" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
+ </bind>
+
<bind pointcut="call(org.jboss.test.aop.beforeafterArgs.TargetCallerPOJO2->new(int,..))">
<stack-ref name="TargetAdvices"/>
</bind>
- <bind pointcut="call(void org.jboss.test.aop.beforeafterArgs.TargetCallerPOJO2->*())">
+ <bind pointcut="call(org.jboss.test.aop.beforeafterArgs.TargetCallerInvalidPOJO2->new(int,..))">
<stack-ref name="TargetAdvices"/>
</bind>
+
+ <bind pointcut="call(void org.jboss.test.aop.beforeafterArgs.TargetCallerPOJO2->*()) AND !call(* *->method*_())">
+ <stack-ref name="TargetAdvices"/>
+ <before name="before3" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
+ <around name="around3" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
+ <throwing name="throwing3" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
+ <finally name="finally3" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
+ </bind>
+
+ <bind pointcut="call(void org.jboss.test.aop.beforeafterArgs.TargetCallerPOJO2->method*_())">
+ <stack-ref name="TargetAdvices"/>
+ </bind>
+ <bind pointcut="call(void org.jboss.test.aop.beforeafterArgs.TargetCallerInvalidPOJO2->method*_())">
+ <before name="before3" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
+ <around name="around3" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
+ <throwing name="throwing3" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
+ <finally name="finally3" aspect="org.jboss.test.aop.beforeafterArgs.TargetAspect"/>
+ </bind>
+
<!-- @Thrown test -->
<aspect class="org.jboss.test.aop.beforeafterArgs.ThrownAspect" scope="PER_VM"/>
<bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ThrownPOJO->method1(..))">
- <throwing name="throwing1" aspect="org.jboss.test.aop.beforeafterArgs.ThrownAspect"/>
<finally name="finally1" aspect="org.jboss.test.aop.beforeafterArgs.ThrownAspect"/>
</bind>
+ <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ThrownInvalidPOJO->method1(..))">
+ <throwing name="throwing1" aspect="org.jboss.test.aop.beforeafterArgs.ThrownAspect"/>
+ </bind>
+
<bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ThrownPOJO->method2(..))">
<throwing name="throwing2" aspect="org.jboss.test.aop.beforeafterArgs.ThrownAspect"/>
<finally name="finally2" aspect="org.jboss.test.aop.beforeafterArgs.ThrownAspect"/>
</bind>
<bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ThrownPOJO->method3(..))">
+ </bind>
+
+ <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ThrownInvalidPOJO->method3(..))">
<throwing name="throwing3" aspect="org.jboss.test.aop.beforeafterArgs.ThrownAspect"/>
<finally name="finally3" aspect="org.jboss.test.aop.beforeafterArgs.ThrownAspect"/>
</bind>
<bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ThrownPOJO->method4(..))">
- <throwing name="throwing4" aspect="org.jboss.test.aop.beforeafterArgs.ThrownAspect"/>
<finally name="finally4" aspect="org.jboss.test.aop.beforeafterArgs.ThrownAspect"/>
</bind>
+ <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ThrownInvalidPOJO->method4(..))">
+ <throwing name="throwing4" aspect="org.jboss.test.aop.beforeafterArgs.ThrownAspect"/>
+ </bind>
+
<bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ThrownPOJO->method5(..))">
- <throwing name="throwing5" aspect="org.jboss.test.aop.beforeafterArgs.ThrownAspect"/>
<finally name="finally5" aspect="org.jboss.test.aop.beforeafterArgs.ThrownAspect"/>
</bind>
+
+ <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ThrownInvalidPOJO->method5(..))">
+ <throwing name="throwing5" aspect="org.jboss.test.aop.beforeafterArgs.ThrownAspect"/>
+ </bind>
<bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ThrownPOJO->method6(..))">
<throwing name="throwing6" aspect="org.jboss.test.aop.beforeafterArgs.ThrownAspect"/>
<finally name="finally6" aspect="org.jboss.test.aop.beforeafterArgs.ThrownAspect"/>
</bind>
- <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ThrownPOJO->method7(..))">
- <throwing name="throwing7" aspect="org.jboss.test.aop.beforeafterArgs.ThrownAspect"/>
+ <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ThrownPOJO->method7(..))">
+ </bind>
+
+ <bind pointcut="execution(* org.jboss.test.aop.beforeafterArgs.ThrownInvalidPOJO->method7(..))">
<throwing name="throwing8" aspect="org.jboss.test.aop.beforeafterArgs.ThrownAspect"/>
</bind>
@@ -856,7 +1101,6 @@
<finally name="finally69" aspect="org.jboss.test.aop.beforeafterArgs.OverloadedFinallyAspect"/>
<finally name="finally70" aspect="org.jboss.test.aop.beforeafterArgs.OverloadedFinallyAspect"/>
<finally name="finally71" aspect="org.jboss.test.aop.beforeafterArgs.OverloadedFinallyAspect"/>
- <finally name="finally72" aspect="org.jboss.test.aop.beforeafterArgs.OverloadedFinallyAspect"/>
</bind>
<aspect class="org.jboss.test.aop.beforeafterArgs.OverloadedBeforeCallAspect" scope="PER_VM"/>
@@ -909,7 +1153,6 @@
<before name="before42" aspect="org.jboss.test.aop.beforeafterArgs.OverloadedBeforeCallAspect"/>
<before name="before43" aspect="org.jboss.test.aop.beforeafterArgs.OverloadedBeforeCallAspect"/>
<before name="before44" aspect="org.jboss.test.aop.beforeafterArgs.OverloadedBeforeCallAspect"/>
- <before name="before45" aspect="org.jboss.test.aop.beforeafterArgs.OverloadedBeforeCallAspect"/>
<around name="around1" aspect="org.jboss.test.aop.beforeafterArgs.OverloadedAroundCallAspect"/>
<around name="around2" aspect="org.jboss.test.aop.beforeafterArgs.OverloadedAroundCallAspect"/>
<around name="around3" aspect="org.jboss.test.aop.beforeafterArgs.OverloadedAroundCallAspect"/>
@@ -955,7 +1198,6 @@
<around name="around43" aspect="org.jboss.test.aop.beforeafterArgs.OverloadedAroundCallAspect"/>
<around name="around44" aspect="org.jboss.test.aop.beforeafterArgs.OverloadedAroundCallAspect"/>
<around name="around45" aspect="org.jboss.test.aop.beforeafterArgs.OverloadedAroundCallAspect"/>
- <around name="around46" aspect="org.jboss.test.aop.beforeafterArgs.OverloadedAroundCallAspect"/>
<after name="after1" aspect="org.jboss.test.aop.beforeafterArgs.OverloadedAfterCallAspect"/>
<after name="after2" aspect="org.jboss.test.aop.beforeafterArgs.OverloadedAfterCallAspect"/>
<after name="after3" aspect="org.jboss.test.aop.beforeafterArgs.OverloadedAfterCallAspect"/>
Modified: projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafter/BeforeAfterThrowingTestCase.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafter/BeforeAfterThrowingTestCase.java 2007-08-12 18:02:41 UTC (rev 64551)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafter/BeforeAfterThrowingTestCase.java 2007-08-13 04:23:22 UTC (rev 64552)
@@ -21,6 +21,7 @@
*/
package org.jboss.test.aop.beforeafter;
+import org.jboss.aop.advice.NoMatchingAdviceException;
import org.jboss.test.aop.AOPTestWithSetup;
/**
@@ -102,6 +103,154 @@
assertTrue(SimpleAspect.finallyAdvice);
}
+ public void testNoMatchingSimple() throws Exception
+ {
+ System.out.println("=== TESING NO MATCHING SIMPLE");
+ boolean thrown = false;
+ try
+ {
+ new InvalidPOJO();
+ }
+ catch(NoMatchingAdviceException e)
+ {
+ thrown = true;
+ }
+ assertTrue(thrown);
+
+ thrown = false;
+ try
+ {
+ new InvalidPOJO((short) 5);
+ }
+ catch(NoMatchingAdviceException e)
+ {
+ thrown = true;
+ }
+ assertTrue(thrown);
+
+ thrown = false;
+ try
+ {
+ new InvalidPOJO(5l);
+ }
+ catch(NoMatchingAdviceException e)
+ {
+ thrown = true;
+ }
+ assertTrue(thrown);
+
+ InvalidPOJO invalidPojo = new InvalidPOJO("");
+ thrown = false;
+ try
+ {
+ invalidPojo.methodBefore();
+ }
+ catch(NoMatchingAdviceException e)
+ {
+ thrown = true;
+ }
+ assertTrue(thrown);
+
+ thrown = false;
+ try
+ {
+ invalidPojo.methodBefore(true);
+ }
+ catch(NoMatchingAdviceException e)
+ {
+ thrown = true;
+ }
+ assertTrue(thrown);
+
+ thrown = false;
+ try
+ {
+ invalidPojo.methodAfter();
+ }
+ catch(NoMatchingAdviceException e)
+ {
+ thrown = true;
+ }
+ assertTrue(thrown);
+
+ thrown = false;
+ try
+ {
+ invalidPojo.methodAfter(true);
+ }
+ catch(NoMatchingAdviceException e)
+ {
+ thrown = true;
+ }
+ assertTrue(thrown);
+
+ thrown = false;
+ try
+ {
+ new InvalidAdviceNamePOJO();
+ }
+ catch(NoMatchingAdviceException e)
+ {
+ thrown = true;
+ }
+ assertTrue(thrown);
+
+ thrown = false;
+ try
+ {
+ System.out.println(invalidPojo.i);
+ }
+ catch(NoMatchingAdviceException e)
+ {
+ thrown = true;
+ }
+ assertTrue(thrown);
+
+ thrown = false;
+ try
+ {
+ System.out.println(invalidPojo.superValue);
+ }
+ catch (NoMatchingAdviceException e)
+ {
+ thrown = true;
+ }
+ assertTrue(thrown);
+
+ thrown = false;
+ try
+ {
+ invalidPojo.superValue = new SuperValue(5);
+ }
+ catch (NoMatchingAdviceException e)
+ {
+ thrown = true;
+ }
+ assertTrue(thrown);
+
+ thrown = false;
+ try
+ {
+ invalidPojo.subValue = new SubValue(5);
+ }
+ catch (NoMatchingAdviceException e)
+ {
+ thrown = true;
+ }
+ assertTrue(thrown);
+
+ thrown = false;
+ try
+ {
+ invalidPojo.methodAfter(new SubValue(1), 1);
+ }
+ catch (NoMatchingAdviceException e)
+ {
+ thrown = true;
+ }
+ assertTrue(thrown);
+ }
+
public void testArgs() throws Exception
{
System.out.println("=== TESTING WITH ARGUMENTS");
@@ -130,55 +279,7 @@
assertEquals("after2", ArgsAspect.after);
assertNull(ArgsAspect.throwing);
-
- System.out.println("* Testing method()");
- ArgsAspect.clear();
- pojo.method();
- assertNull(ArgsAspect.before);
- assertNull(ArgsAspect.after);
- assertNull(ArgsAspect.throwing);
-
- assertFalse(SimpleAspect.before);
- assertFalse(SimpleAspect.around);
- assertFalse(SimpleAspect.after);
- assertFalse(SimpleAspect.throwing);
-
-
- System.out.println("* Testing method1(boolean) with exception");
- ArgsAspect.clear();
SimpleAspect.clear();
- try
- {
- pojo.method1(true);
- throw new RuntimeException("TestException not thrown");
- }
- catch (TestException e)
- {
- assertSame(e, ArgsAspect.exception);
- assertSame(e, SimpleAspect.exception);
- }
- assertNull(ArgsAspect.before);
- assertNull(ArgsAspect.after);
- assertEquals("throwing2", ArgsAspect.throwing);
- assertTrue(SimpleAspect.before);
- assertTrue(SimpleAspect.around);
- assertFalse(SimpleAspect.after);
- assertTrue(SimpleAspect.throwing);
-
- System.out.println("* Testing method1(boolean)");
- ArgsAspect.clear();
- SimpleAspect.clear();
- pojo.method1(false);
- assertNull(ArgsAspect.before);
- assertNull(ArgsAspect.after);
- assertNull(ArgsAspect.throwing);
- assertTrue(SimpleAspect.before);
- assertTrue(SimpleAspect.around);
- assertTrue(SimpleAspect.after);
- assertFalse(SimpleAspect.throwing);
-
-
- SimpleAspect.clear();
System.out.println("* Testing method(boolean, int, long, String) with exception");
ArgsAspect.clear();
try
@@ -237,7 +338,7 @@
pojo.i = 5;
assertEquals("before3", ArgsAspect.before);
assertNull(ArgsAspect.throwing);
- assertEquals("after3", ArgsAspect.after);
+ assertNull(ArgsAspect.after);
ArgsAspect.clear();
System.out.println("* Reading i");
@@ -257,7 +358,7 @@
pojo.superValue = new SuperValue(5);
assertEquals("before4", ArgsAspect.before);
assertNull(ArgsAspect.throwing);
- assertEquals(null, ArgsAspect.after);
+ assertNull(null, ArgsAspect.after);
ArgsAspect.clear();
System.out.println("* Reading superValue");
Added: projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafter/InvalidPOJO.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafter/InvalidPOJO.java (rev 0)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafter/InvalidPOJO.java 2007-08-13 04:23:22 UTC (rev 64552)
@@ -0,0 +1,55 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt 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.beforeafter;
+
+/**
+ * POJO whose joinpoints execution will throw a NoMatchingAdviceException, due to
+ * the fact that the advice bound to it does not exist.
+ *
+ * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ */
+class InvalidAdviceNamePOJO {}
+
+/**
+ * POJO whose joinpoint executions will throw a NoMatchingAdviceException, due to
+ * the fact that there is no advice that matches the joinpoint.
+ *
+ * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ */
+class InvalidPOJO
+{
+ int i;
+ SuperValue superValue;
+ SubValue subValue;
+
+ public InvalidPOJO() {}
+ public InvalidPOJO(short arg) {}
+ public InvalidPOJO(long arg) {}
+ // constructor that is not bound to any advice
+ public InvalidPOJO(String arg) {}
+
+ public void methodBefore() {}
+ public void methodBefore(boolean arg) {}
+ public void methodAfter() {}
+ public void methodAfter(boolean arg) {}
+ public void methodAfter(SubValue arg1, int arg2) {}
+}
\ No newline at end of file
Modified: projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafter/POJO.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafter/POJO.java 2007-08-12 18:02:41 UTC (rev 64551)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafter/POJO.java 2007-08-13 04:23:22 UTC (rev 64552)
@@ -82,11 +82,6 @@
return this;
}
- public void method()
- {
- joinPointRun = true;
- }
-
public SuperValue method(SubValue sup, SubValue sub)
{
joinPointRun = true;
Added: projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/ArgsInvalidPOJO.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/ArgsInvalidPOJO.java (rev 0)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/ArgsInvalidPOJO.java 2007-08-13 04:23:22 UTC (rev 64552)
@@ -0,0 +1,124 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt 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.beforeafterArgs;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * POJO whose joinpoint executions will throw a NoMatchingAdviceException, due to
+ * the fact that there is no advice that matches the joinpoint.
+ *
+ * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ */
+public class ArgsInvalidPOJO
+{
+ public Object field1;
+
+ public String field2;
+
+ public int field3;
+
+ public static boolean field4;
+
+ public int bunch1(int x, double y, float z, String str, int q)
+ {
+ return x + (int) y + (int) z + q;
+ }
+
+ public int bunch2(int x, double y, float z, int q)
+ {
+ return x + (int) y * 2 + (int) z + q;
+ }
+
+ public int bunch3(int x, double y, float z, int q)
+ {
+ return x + (int) y * 3 + (int) z + q;
+ }
+
+ public int bunch4(int x, double y, float z, int q)
+ {
+ return x + (int) y * 4 + (int) z + q;
+ }
+
+ public int bunch5(int x, double y, float z, int q)
+ {
+ return x + (int) y * 5 + (int) z + q;
+ }
+
+ public int bunch6(int x, double y, float z, int q)
+ {
+ return x + (int) y * 6 + (int) z + q;
+ }
+
+ public int bunch7(int x, double y, float z, int q)
+ {
+ return x + (int) y * 7 + (int) z + q;
+ }
+
+ public int bunch8(int x, double y, float z, int q)
+ {
+ return x + (int) y * 8 + (int) z + q;
+ }
+
+ public int bunch9(int x, double y, float z, int q)
+ {
+ return x + (int) y * 9 + (int) z + q;
+ }
+
+ public void method2(String param1, int param2, boolean param3, ArgsPOJO[] param4)
+ {}
+
+ public void method4(String param1, int param2, boolean param3, ArgsPOJO[] param4)
+ {}
+
+ public void method6(short param1, long param2) throws POJOException
+ {
+ throw new POJOException();
+ }
+
+ public void method8() throws POJOException
+ {
+ this.method6((short) -4, (long) 4);
+ }
+
+ public void method9(Interface param) throws POJOException {}
+
+ public void method10(Interface param) throws POJOException
+ {
+ throw new POJOException();
+ }
+
+ public void method11(String param1, Collection param2) {}
+
+ public void method12(String param1, Collection param2) throws POJOException
+ {
+ throw new POJOException();
+ }
+
+ public void method13(List<SuperValue> arg) {}
+
+ public void method14(List<SuperValue> arg) throws POJOException
+ {
+ throw new POJOException();
+ }
+}
\ No newline at end of file
Modified: projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/InvalidAspect.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/InvalidAspect.java 2007-08-12 18:02:41 UTC (rev 64551)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/InvalidAspect.java 2007-08-13 04:23:22 UTC (rev 64552)
@@ -23,7 +23,12 @@
import junit.framework.Assert;
+import org.jboss.aop.advice.annotation.Arg;
+import org.jboss.aop.advice.annotation.Args;
import org.jboss.aop.advice.annotation.JoinPoint;
+import org.jboss.aop.advice.annotation.Return;
+import org.jboss.aop.joinpoint.CurrentInvocation;
+import org.jboss.aop.joinpoint.Invocation;
/**
* Aspect whose advices must never be called.
@@ -49,4 +54,35 @@
{
Assert.fail("This advice should never be executed");
}
+
+ public void before1(@Arg int arg, @Args Object[] args)
+ {
+ Assert.fail("This advice should never be executed");
+ }
+
+ public Object around1(@Arg int arg, @Args Object[] args) throws Throwable
+ {
+ Assert.fail("This advice should never be executed");
+ return CurrentInvocation.proceed();
+ }
+
+ public void finally72(@Return String valueReturned)
+ {
+ Assert.fail("This advice should never be executed");
+ }
+
+ public void finally2(@Return String returnedValue)
+ {
+ Assert.fail("This advice should never be executed");
+ }
+
+ public void around1(Invocation invocation) throws Exception
+ {
+ Assert.fail("This advice should never be executed");
+ }
+
+ public void throwing7(Throwable throwable)
+ {
+ Assert.fail("This advice should never be executed");
+ }
}
\ No newline at end of file
Added: projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/JoinPointInvalidPOJO.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/JoinPointInvalidPOJO.java (rev 0)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/JoinPointInvalidPOJO.java 2007-08-13 04:23:22 UTC (rev 64552)
@@ -0,0 +1,153 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt 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.beforeafterArgs;
+
+/**
+ * Plain old java object used on @JoinPoint parameter tests.
+ *
+ * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ */
+public class JoinPointInvalidPOJO
+{
+ public int number;
+ public String text;
+
+ // constructor without advices
+ public JoinPointInvalidPOJO() {}
+
+ // constructor execution
+ public JoinPointInvalidPOJO(short arg0, boolean shouldThrow) throws POJOException
+ {
+ if (shouldThrow)
+ {
+ throw new POJOException();
+ }
+ }
+
+ // construction
+ public JoinPointInvalidPOJO(float arg0, boolean shouldThrow) throws POJOException
+ {
+ if (shouldThrow)
+ {
+ throw new POJOException();
+ }
+ }
+
+ // called constructor
+ public JoinPointInvalidPOJO(boolean shouldThrow) throws POJOException
+ {
+ if (shouldThrow)
+ {
+ throw new POJOException();
+ }
+ }
+
+ // constructor call constructor
+ public JoinPointInvalidPOJO(int arg0, boolean shouldThrow) throws POJOException
+ {
+ new JoinPointInvalidPOJO(shouldThrow);
+ }
+
+ // constructor call method
+ public JoinPointInvalidPOJO(boolean arg0, boolean shouldThrow) throws POJOException
+ {
+ this.calledMethod(shouldThrow);
+ }
+
+ // constructor call static method
+ public JoinPointInvalidPOJO(char arg0, boolean shouldThrow) throws POJOException
+ {
+ calledStaticMethod(shouldThrow);
+ }
+
+ public void method1()
+ {
+
+ }
+
+ public void method3() throws POJOException
+ {
+ throw new POJOException();
+ }
+
+ public void method5() throws POJOException
+ {
+ throw new POJOException();
+ }
+
+ public void method6() throws POJOException
+ {
+ throw new POJOException();
+ }
+
+ // method call constructor
+ public void callConstructor(boolean shouldThrow) throws POJOException
+ {
+ new JoinPointInvalidPOJO(shouldThrow);
+ }
+
+ // static method call constructor
+ public static void staticCallConstructor(boolean shouldThrow) throws POJOException
+ {
+ new JoinPointInvalidPOJO(shouldThrow);
+ }
+
+ // method call method
+ public void callMethod(boolean shouldThrow) throws POJOException
+ {
+ calledMethod(shouldThrow);
+ }
+
+ // static method call method
+ public static void staticCallMethod(JoinPointInvalidPOJO pojo, boolean shouldThrow) throws POJOException
+ {
+ pojo.calledMethod(shouldThrow);
+ }
+
+ public void calledMethod(boolean shouldThrow) throws POJOException
+ {
+ if (shouldThrow)
+ {
+ throw new POJOException();
+ }
+ }
+
+ // method call static method
+ public void callStaticMethod(boolean shouldThrow) throws POJOException
+ {
+ calledStaticMethod(shouldThrow);
+ }
+
+ // static method call static method
+ public static void staticCallStaticMethod(boolean shouldThrow) throws POJOException
+ {
+ calledStaticMethod(shouldThrow);
+ }
+
+ public static void calledStaticMethod(boolean shouldThrow) throws POJOException
+ {
+ if (shouldThrow)
+ {
+ throw new POJOException();
+ }
+ }
+}
\ No newline at end of file
Modified: projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/JoinPointTestCase.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/JoinPointTestCase.java 2007-08-12 18:02:41 UTC (rev 64551)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/JoinPointTestCase.java 2007-08-13 04:23:22 UTC (rev 64552)
@@ -21,8 +21,6 @@
*/
package org.jboss.test.aop.beforeafterArgs;
-import java.lang.reflect.Method;
-
import junit.framework.Test;
import junit.framework.TestSuite;
import junit.textui.TestRunner;
Modified: projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/OverloadedAdviceTestCase.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/OverloadedAdviceTestCase.java 2007-08-12 18:02:41 UTC (rev 64551)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/OverloadedAdviceTestCase.java 2007-08-13 04:23:22 UTC (rev 64552)
@@ -558,7 +558,6 @@
assertEquals("Object,int", OverloadedFinallyAspect.finally69);
assertEquals("void,Object[]", OverloadedFinallyAspect.finally70);
assertEquals("void,Object", OverloadedFinallyAspect.finally71);
- assertEquals("void", OverloadedFinallyAspect.finally72);
}
public void testBeforeCall()
@@ -647,7 +646,6 @@
OverloadedBeforeCallAspect.before42);
assertEquals("SuperClass", OverloadedBeforeCallAspect.before43);
assertEquals("int", OverloadedBeforeCallAspect.before44);
- assertEquals("Object[]", OverloadedBeforeCallAspect.before45);
}
public void testAroundCall()
@@ -745,7 +743,6 @@
OverloadedAroundCallAspect.around43);
assertEquals("SuperClass", OverloadedAroundCallAspect.around44);
assertEquals("int", OverloadedAroundCallAspect.around45);
- assertEquals("Object[]", OverloadedAroundCallAspect.around46);
}
public void testAfterCall()
Modified: projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/OverloadedAroundCallAspect.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/OverloadedAroundCallAspect.java 2007-08-12 18:02:41 UTC (rev 64551)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/OverloadedAroundCallAspect.java 2007-08-13 04:23:22 UTC (rev 64552)
@@ -21,8 +21,6 @@
*/
package org.jboss.test.aop.beforeafterArgs;
-import junit.framework.Assert;
-
import org.jboss.aop.advice.annotation.Arg;
import org.jboss.aop.advice.annotation.Args;
import org.jboss.aop.advice.annotation.Caller;
@@ -85,8 +83,6 @@
static String around43 = null;
static String around44 = null;
static String around45 = null;
- static String around46 = null;
- static String around47 = null;
public static void clear()
{
@@ -135,8 +131,6 @@
around43 = null;
around44 = null;
around45 = null;
- around46 = null;
- around47 = null;
}
/* AROUND1 ADVICE */
@@ -468,12 +462,6 @@
return CurrentInvocation.proceed();
}
- public Object around1(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND2 ADVICE */
public Object around2(@JoinPoint MethodCalledByMethodInvocation invocation,
@@ -797,12 +785,6 @@
return CurrentInvocation.proceed();
}
- public Object around2(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND3 ADVICE */
public Object around3(@JoinPoint MethodCalledByMethodInvocation invocation,
@@ -1118,12 +1100,6 @@
return CurrentInvocation.proceed();
}
- public Object around3(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND4 ADVICE */
public Object around4(@JoinPoint MethodCalledByMethodInvocation invocation,
@@ -1431,12 +1407,6 @@
return CurrentInvocation.proceed();
}
- public Object around4(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND5 ADVICE */
public Object around5(@JoinPoint MethodCalledByMethodInvocation invocation,
@@ -1736,12 +1706,6 @@
return CurrentInvocation.proceed();
}
- public Object around5(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND6 ADVICE */
public Object around6(@JoinPoint MethodCalledByMethodInvocation invocation,
@@ -2032,12 +1996,6 @@
return CurrentInvocation.proceed();
}
- public Object around6(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND7 ADVICE */
public Object around7(@JoinPoint MethodCalledByMethodInvocation invocation,
@@ -2320,12 +2278,6 @@
return CurrentInvocation.proceed();
}
- public Object around7(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND8 ADVICE */
public Object around8(@JoinPoint MethodCalledByMethodInvocation invocation,
@@ -2600,12 +2552,6 @@
return CurrentInvocation.proceed();
}
- public Object around8(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND9 ADVICE */
public Object around9(@JoinPoint MethodCalledByMethodInvocation invocation,
@@ -2872,12 +2818,6 @@
return CurrentInvocation.proceed();
}
- public Object around9(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND10 ADVICE */
public Object around10(@JoinPoint MethodCalledByMethodInvocation invocation,
@@ -3136,12 +3076,6 @@
return CurrentInvocation.proceed();
}
- public Object around10(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND11 ADVICE */
public Object around11(@JoinPoint MethodCalledByMethodInvocation invocation,
@@ -3392,12 +3326,6 @@
return CurrentInvocation.proceed();
}
- public Object around11(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND12 ADVICE */
public Object around12(@JoinPoint MethodCalledByMethodInvocation invocation,
@@ -3640,12 +3568,6 @@
return CurrentInvocation.proceed();
}
- public Object around12(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND13 ADVICE */
public Object around13(@JoinPoint MethodCalledByMethodInvocation invocation,
@@ -3880,12 +3802,6 @@
return CurrentInvocation.proceed();
}
- public Object around13(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND14 ADVICE */
public Object around14(@JoinPoint MethodCalledByMethodInvocation invocation,
@@ -4113,12 +4029,6 @@
return CurrentInvocation.proceed();
}
- public Object around14(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND15 ADVICE */
public Object around15(@JoinPoint MethodCalledByMethodInvocation invocation,
@@ -4339,12 +4249,6 @@
return CurrentInvocation.proceed();
}
- public Object around15(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND16 ADVICE */
public Object around16(@JoinPoint MethodCalledByMethodInvocation invocation,
@@ -4558,12 +4462,6 @@
return CurrentInvocation.proceed();
}
- public Object around16(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND17 ADVICE */
public Object around17(@JoinPoint MethodCalledByMethodInvocation invocation,
@@ -4770,12 +4668,6 @@
return CurrentInvocation.proceed();
}
- public Object around17(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND18 ADVICE */
public Object around18(@JoinPoint MethodCalledByMethodInvocation invocation,
@@ -4975,12 +4867,6 @@
return CurrentInvocation.proceed();
}
- public Object around18(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND19 ADVICE */
public Object around19(@JoinPoint MethodCalledByMethodInvocation invocation,
@@ -5173,12 +5059,6 @@
return CurrentInvocation.proceed();
}
- public Object around19(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND20 ADVICE */
public Object around20(@JoinPoint MethodCalledByMethodInvocation invocation,
@@ -5364,12 +5244,6 @@
return CurrentInvocation.proceed();
}
- public Object around20(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND21 ADVICE */
public Object around21(@JoinPoint MethodCalledByMethodInvocation invocation,
@@ -5547,12 +5421,6 @@
return CurrentInvocation.proceed();
}
- public Object around21(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND22 ADVICE */
public Object around22(@JoinPoint MethodCalledByMethodInvocation invocation,
@@ -5723,12 +5591,6 @@
return CurrentInvocation.proceed();
}
- public Object around22(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND23 ADVICE */
public Object around23(@JoinPoint MethodCalledByMethodInvocation invocation,
@@ -5892,12 +5754,6 @@
return CurrentInvocation.proceed();
}
- public Object around23(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND24 ADVICE */
public Object around24(@JoinPoint MethodCalledByMethodInvocation invocation)
@@ -6054,12 +5910,6 @@
return CurrentInvocation.proceed();
}
- public Object around24(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND25 ADVICE */
public Object around25(@Target OverloadedAdvicePOJO target,
@@ -6209,12 +6059,6 @@
return CurrentInvocation.proceed();
}
- public Object around25(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND26 ADVICE */
public Object around26(@Target OverloadedAdvicePOJO target,
@@ -6357,12 +6201,6 @@
return CurrentInvocation.proceed();
}
- public Object around26(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND27 ADVICE */
public Object around27(@Target Object target,
@@ -6498,12 +6336,6 @@
return CurrentInvocation.proceed();
}
- public Object around27(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND28 ADVICE */
public Object around28(@Target Object target, @Caller SuperClass caller,
@@ -6632,12 +6464,6 @@
return CurrentInvocation.proceed();
}
- public Object around28(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND29 ADVICE */
public Object around29(@Target OverloadedAdvicePOJO target,
@@ -6759,12 +6585,6 @@
return CurrentInvocation.proceed();
}
- public Object around29(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND30 ADVICE */
public Object around30(@Target OverloadedAdvicePOJO target,
@@ -6878,12 +6698,6 @@
return CurrentInvocation.proceed();
}
- public Object around30(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND31 ADVICE */
public Object around31(@Target Object target,
@@ -6990,12 +6804,6 @@
return CurrentInvocation.proceed();
}
- public Object around31(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND32 ADVICE */
public Object around32(@Target Object target, @Caller SuperClass caller,
@@ -7094,12 +6902,6 @@
return CurrentInvocation.proceed();
}
- public Object around32(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND33 ADVICE */
public Object around33(@Target OverloadedAdvicePOJO target, @Arg int arg)
@@ -7191,12 +6993,6 @@
return CurrentInvocation.proceed();
}
- public Object around33(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND34 ADVICE */
public Object around34(@Target Object target, @Arg int arg) throws Throwable
@@ -7281,12 +7077,6 @@
return CurrentInvocation.proceed();
}
- public Object around34(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND35 ADVICE */
public Object around35(@Target OverloadedAdvicePOJO target, @Args Object[] args)
@@ -7365,12 +7155,6 @@
return CurrentInvocation.proceed();
}
- public Object around35(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND36 ADVICE */
public Object around36(@Target Object target, @Args Object[] args) throws Throwable
@@ -7442,12 +7226,6 @@
return CurrentInvocation.proceed();
}
- public Object around36(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND37 ADVICE */
public Object around37(@Target OverloadedAdvicePOJO target) throws Throwable
@@ -7513,12 +7291,6 @@
return CurrentInvocation.proceed();
}
- public Object around37(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND38 ADVICE */
public Object around38(@Target Object target) throws Throwable
@@ -7578,12 +7350,6 @@
return CurrentInvocation.proceed();
}
- public Object around38(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND39 ADVICE */
public Object around39(@Caller OverloadedAdvicePOJOCaller caller, @Arg int arg)
@@ -7637,12 +7403,6 @@
return CurrentInvocation.proceed();
}
- public Object around39(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND40 ADVICE */
public Object around40(@Caller SuperClass caller, @Arg int arg) throws Throwable
@@ -7689,12 +7449,6 @@
return CurrentInvocation.proceed();
}
- public Object around40(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND41 ADVICE */
public Object around41(@Caller OverloadedAdvicePOJOCaller caller,
@@ -7735,12 +7489,6 @@
return CurrentInvocation.proceed();
}
- public Object around41(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND42 ADVICE */
public Object around42(@Caller SuperClass caller, @Args Object[] args)
@@ -7774,12 +7522,6 @@
return CurrentInvocation.proceed();
}
- public Object around42(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND43 ADVICE */
public Object around43(@Caller OverloadedAdvicePOJOCaller caller) throws Throwable
@@ -7806,12 +7548,6 @@
return CurrentInvocation.proceed();
}
- public Object around43(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND44 ADVICE */
public Object around44(@Caller SuperClass caller) throws Throwable
@@ -7832,12 +7568,6 @@
return CurrentInvocation.proceed();
}
- public Object around44(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
/* AROUND45 ADVICE */
public Object around45(@Arg int arg) throws Throwable
@@ -7851,24 +7581,4 @@
around45 = "Object[]";
return CurrentInvocation.proceed();
}
-
- public Object around45(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
-
- /* AROUND46 ADVICE */
-
- public Object around46(@Args Object[] args) throws Throwable
- {
- around46 = "Object[]";
- return CurrentInvocation.proceed();
- }
-
- public Object around46(@Arg int arg, @Args Object[] args) throws Throwable
- {
- Assert.fail("This advice should never be executed");
- return CurrentInvocation.proceed();
- }
}
\ No newline at end of file
Modified: projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/OverloadedBeforeCallAspect.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/OverloadedBeforeCallAspect.java 2007-08-12 18:02:41 UTC (rev 64551)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/OverloadedBeforeCallAspect.java 2007-08-13 04:23:22 UTC (rev 64552)
@@ -21,8 +21,6 @@
*/
package org.jboss.test.aop.beforeafterArgs;
-import junit.framework.Assert;
-
import org.jboss.aop.advice.annotation.Arg;
import org.jboss.aop.advice.annotation.Args;
import org.jboss.aop.advice.annotation.Caller;
@@ -82,8 +80,6 @@
static String before42 = null;
static String before43 = null;
static String before44 = null;
- static String before45 = null;
- static String before46 = null;
public static void clear()
{
@@ -131,8 +127,6 @@
before42 = null;
before43 = null;
before44 = null;
- before45 = null;
- before46 = null;
}
/* BEFORE1 ADVICE */
@@ -401,11 +395,6 @@
before1 = "Object[]";
}
- public void before1(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE2 ADVICE */
public void before2(@JoinPoint MethodCallByMethod joinPoint,
@@ -665,11 +654,6 @@
before2 = "Object[]";
}
- public void before2(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE3 ADVICE */
public void before3(@JoinPoint MethodCallByMethod joinPoint,
@@ -922,11 +906,6 @@
before3 = "Object[]";
}
- public void before3(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE4 ADVICE */
public void before4(@JoinPoint MethodCallByMethod joinPoint,
@@ -1172,11 +1151,6 @@
before4 = "Object[]";
}
- public void before4(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE5 ADVICE */
public void before5(@JoinPoint MethodCallByMethod joinPoint,
@@ -1415,11 +1389,6 @@
before5 = "Object[]";
}
- public void before5(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE6 ADVICE */
public void before6(@JoinPoint MethodCallByMethod joinPoint,
@@ -1651,11 +1620,6 @@
before6 = "Object[]";
}
- public void before6(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE7 ADVICE */
public void before7(@JoinPoint MethodCallByMethod joinPoint,
@@ -1880,11 +1844,6 @@
before7 = "Object[]";
}
- public void before7(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE8 ADVICE */
public void before8(@JoinPoint MethodCallByMethod joinPoint,
@@ -2102,11 +2061,6 @@
before8 = "Object[]";
}
- public void before8(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE9 ADVICE */
public void before9(@JoinPoint MethodCallByMethod joinPoint,
@@ -2317,11 +2271,6 @@
before9 = "Object[]";
}
- public void before9(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE10 ADVICE */
public void before10(@JoinPoint MethodCallByMethod joinPoint,
@@ -2525,11 +2474,6 @@
before10 = "Object[]";
}
- public void before10(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE11 ADVICE */
public void before11(@JoinPoint MethodCallByMethod joinPoint,
@@ -2727,11 +2671,6 @@
before11 = "Object[]";
}
- public void before11(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE12 ADVICE */
public void before12(@JoinPoint MethodCallByMethod joinPoint,
@@ -2923,11 +2862,6 @@
before12 = "Object[]";
}
- public void before12(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE13 ADVICE */
public void before13(@JoinPoint MethodCallByMethod joinPoint,
@@ -3113,11 +3047,6 @@
before13 = "Object[]";
}
- public void before13(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE14 ADVICE */
public void before14(@JoinPoint MethodCallByMethod joinPoint,
@@ -3297,11 +3226,6 @@
before14 = "Object[]";
}
- public void before14(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE15 ADVICE */
public void before15(@JoinPoint MethodCallByMethod joinPoint,
@@ -3475,11 +3399,6 @@
before15 = "Object[]";
}
- public void before15(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE16 ADVICE */
public void before16(@JoinPoint MethodCallByMethod joinPoint,
@@ -3647,11 +3566,6 @@
before16 = "Object[]";
}
- public void before16(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE17 ADVICE */
public void before17(@JoinPoint MethodCallByMethod joinPoint,
@@ -3813,11 +3727,6 @@
before17 = "Object[]";
}
- public void before17(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE18 ADVICE */
public void before18(@JoinPoint MethodCallByMethod joinPoint,
@@ -3973,11 +3882,6 @@
before18 = "Object[]";
}
- public void before18(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE19 ADVICE */
public void before19(@JoinPoint MethodCallByMethod joinPoint,
@@ -4127,11 +4031,6 @@
before19 = "Object[]";
}
- public void before19(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE20 ADVICE */
public void before20(@JoinPoint MethodCallByMethod joinPoint,
@@ -4275,11 +4174,6 @@
before20 = "Object[]";
}
- public void before20(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE21 ADVICE */
public void before21(@JoinPoint MethodCallByMethod joinPoint, @Arg int arg)
@@ -4417,11 +4311,6 @@
before21 = "Object[]";
}
- public void before21(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE22 ADVICE */
public void before22(@JoinPoint MethodCallByMethod joinPoint,
@@ -4554,11 +4443,6 @@
before22 = "Object[]";
}
- public void before22(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE23 ADVICE */
public void before23(@JoinPoint MethodCallByMethod joinPoint)
@@ -4685,11 +4569,6 @@
before23 = "Object[]";
}
- public void before23(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE24 ADVICE */
public void before24(@Target OverloadedAdvicePOJO target,
@@ -4811,11 +4690,6 @@
before24 = "Object[]";
}
- public void before24(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE25 ADVICE */
public void before25(@Target OverloadedAdvicePOJO target,
@@ -4931,11 +4805,6 @@
before25 = "Object[]";
}
- public void before25(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE26 ADVICE */
public void before26(@Target Object target,
@@ -5045,11 +4914,6 @@
before26 = "Object[]";
}
- public void before26(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE27 ADVICE */
public void before27(@Target Object target, @Caller SuperClass caller,
@@ -5153,11 +5017,6 @@
before27 = "Object[]";
}
- public void before27(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE28 ADVICE */
public void before28(@Target OverloadedAdvicePOJO target,
@@ -5255,11 +5114,6 @@
before28 = "Object[]";
}
- public void before28(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE29 ADVICE */
public void before29(@Target OverloadedAdvicePOJO target,
@@ -5351,11 +5205,6 @@
before29 = "Object[]";
}
- public void before29(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE30 ADVICE */
public void before30(@Target Object target,
@@ -5441,11 +5290,6 @@
before30 = "Object[]";
}
- public void before30(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE31 ADVICE */
public void before31(@Target Object target, @Caller SuperClass caller,
@@ -5525,11 +5369,6 @@
before31 = "Object[]";
}
- public void before31(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE32 ADVICE */
public void before32(@Target OverloadedAdvicePOJO target, @Arg int arg)
@@ -5603,11 +5442,6 @@
before32 = "Object[]";
}
- public void before32(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE33 ADVICE */
public void before33(@Target Object target, @Arg int arg)
@@ -5676,11 +5510,6 @@
before33 = "Object[]";
}
- public void before33(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE34 ADVICE */
public void before34(@Target OverloadedAdvicePOJO target, @Args Object[] args)
@@ -5744,11 +5573,6 @@
before34 = "Object[]";
}
- public void before34(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE35 ADVICE */
public void before35(@Target Object target, @Args Object[] args)
@@ -5807,11 +5631,6 @@
before35 = "Object[]";
}
- public void before35(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE36 ADVICE */
public void before36(@Target OverloadedAdvicePOJO target)
@@ -5865,11 +5684,6 @@
before36 = "Object[]";
}
- public void before36(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE37 ADVICE */
public void before37(@Target Object target)
@@ -5918,11 +5732,6 @@
before37 = "Object[]";
}
- public void before37(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE38 ADVICE */
public void before38(@Caller OverloadedAdvicePOJOCaller caller, @Arg int arg)
@@ -5966,11 +5775,6 @@
before38 = "Object[]";
}
- public void before38(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE39 ADVICE */
public void before39(@Caller SuperClass caller, @Arg int arg)
@@ -6009,11 +5813,6 @@
before39 = "Object[]";
}
- public void before39(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE40 ADVICE */
public void before40(@Caller OverloadedAdvicePOJOCaller caller,
@@ -6047,11 +5846,6 @@
before40 = "Object[]";
}
- public void before40(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE41 ADVICE */
public void before41(@Caller SuperClass caller, @Args Object[] args)
@@ -6079,11 +5873,6 @@
before41 = "Object[]";
}
- public void before41(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE42 ADVICE */
public void before42(@Caller OverloadedAdvicePOJOCaller caller)
@@ -6106,11 +5895,6 @@
before42 = "Object[]";
}
- public void before42(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE43 ADVICE */
public void before43(@Caller SuperClass caller)
@@ -6128,11 +5912,6 @@
before43 = "Object[]";
}
- public void before43(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
/* BEFORE44 ADVICE */
public void before44(@Arg int arg)
@@ -6143,22 +5922,5 @@
public void before44(@Args Object[] args)
{
before44 = "Object[]";
- }
-
- public void before44(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
-
- /* BEFORE45 ADVICE */
-
- public void before45(@Args Object[] args)
- {
- before45 = "Object[]";
- }
-
- public void before45(@Arg int arg, @Args Object[] args)
- {
- Assert.fail("This advice should never be executed");
- }
+ }
}
\ No newline at end of file
Modified: projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/OverloadedFinallyAspect.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/OverloadedFinallyAspect.java 2007-08-12 18:02:41 UTC (rev 64551)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/OverloadedFinallyAspect.java 2007-08-13 04:23:22 UTC (rev 64552)
@@ -23,8 +23,6 @@
import java.io.Serializable;
-import junit.framework.Assert;
-
import org.jboss.aop.advice.annotation.Arg;
import org.jboss.aop.advice.annotation.Args;
import org.jboss.aop.advice.annotation.JoinPoint;
@@ -112,7 +110,6 @@
static String finally69 = null;
static String finally70 = null;
static String finally71 = null;
- static String finally72 = null;
static void clear()
{
@@ -187,7 +184,6 @@
finally69 = null;
finally70 = null;
finally71 = null;
- finally72 = null;
}
/* FINALLY1 ADVICE */
@@ -15602,16 +15598,4 @@
{
finally71 = "void";
}
-
- /* FINALLY72 ADVICE */
-
- public void finally72()
- {
- finally72 = "void";
- }
-
- public void finally72(@Return String valueReturned)
- {
- Assert.fail("This advice should never be executed");
- }
}
\ No newline at end of file
Modified: projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/ReturnAspect.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/ReturnAspect.java 2007-08-12 18:02:41 UTC (rev 64551)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/ReturnAspect.java 2007-08-13 04:23:22 UTC (rev 64552)
@@ -64,11 +64,6 @@
Assert.fail("This advice should never be executed");
}
- public void around1(Invocation invocation) throws Exception
- {
- Assert.fail("This advice should never be executed");
- }
-
public void around2(@JoinPoint
Invocation invocation) throws Exception
{
@@ -227,12 +222,7 @@
{
finallyAdvice = "finally1";
}
-
- public void finally2(@Return String returnedValue)
- {
- Assert.fail("This advice should never be executed");
- }
-
+
public String finally3(@Return Object returnedValue, @Thrown Throwable thrown)
{
finallyAdvice = "finally3";
Added: projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/ReturnInvalidPOJO.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/ReturnInvalidPOJO.java (rev 0)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/ReturnInvalidPOJO.java 2007-08-13 04:23:22 UTC (rev 64552)
@@ -0,0 +1,93 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt 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.beforeafterArgs;
+
+/**
+ * Plain old java object used both on @Return parameter tests, and on advice return
+ * type tests.
+ *
+ * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ */
+public class ReturnInvalidPOJO
+{
+ public void method1() {}
+
+ public String method2()
+ {
+ return "method2";
+ }
+
+ public String method3()
+ {
+ return "method3";
+ }
+
+ public String method4()
+ {
+ return "method4";
+ }
+
+ public String method5()
+ {
+ return "method5";
+ }
+
+ public String method6()
+ {
+ return "method6";
+ }
+
+ public String method7()
+ {
+ return "method7";
+ }
+
+ public SubValue method8()
+ {
+ return new SubValue(8);
+ }
+
+ public SubValue method9()
+ {
+ return new SubValue(9);
+ }
+
+ public SuperValue method10()
+ {
+ return new SuperValue(10);
+ }
+
+ public SuperValue method11()
+ {
+ return new SuperValue(11);
+ }
+
+ public SubValue method12() throws POJOException
+ {
+ throw new POJOException();
+ }
+
+ public SubValue method13() throws POJOException
+ {
+ throw new POJOException();
+ }
+}
\ No newline at end of file
Added: projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/TargetCallerInvalidPOJO.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/TargetCallerInvalidPOJO.java (rev 0)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/TargetCallerInvalidPOJO.java 2007-08-13 04:23:22 UTC (rev 64552)
@@ -0,0 +1,57 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt 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.beforeafterArgs;
+
+/**
+ * POJO whose joinpoint executions will throw a NoMatchingAdviceException, due to
+ * the fact that there is no advice that matches the joinpoint.
+ *
+ * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ */
+public class TargetCallerInvalidPOJO
+{
+ public static void method15() throws POJOException
+ {
+ TargetCallerInvalidPOJO2.method4_();
+ }
+}
+
+/**
+ * POJO whose joinpoint executions will throw a NoMatchingAdviceException, due to
+ * the fact that there is no advice that matches the joinpoint.
+ *
+ * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ */
+class TargetCallerInvalidPOJO2 extends TargetCallerInvalidPOJO
+{
+ public TargetCallerInvalidPOJO2(int x){}
+
+ public TargetCallerInvalidPOJO2(int x, String y) throws POJOException
+ {
+ throw new POJOException();
+ }
+
+ public static void method4_() throws POJOException
+ {
+ throw new POJOException();
+ }
+}
\ No newline at end of file
Modified: projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/ThrownAspect.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/ThrownAspect.java 2007-08-12 18:02:41 UTC (rev 64551)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/ThrownAspect.java 2007-08-13 04:23:22 UTC (rev 64552)
@@ -92,11 +92,6 @@
Assert.fail("This advice should never be executed");
}
- public void throwing7(Throwable throwable)
- {
- Assert.fail("This advice should never be executed");
- }
-
public void throwing8(@Arg int i)
{
Assert.fail("This advice should never be executed");
Added: projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/ThrownInvalidPOJO.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/ThrownInvalidPOJO.java (rev 0)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/ThrownInvalidPOJO.java 2007-08-13 04:23:22 UTC (rev 64552)
@@ -0,0 +1,65 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt 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.beforeafterArgs;
+
+/**
+ * Plain old java object used on @Thrown parameter tests.
+ *
+ * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ */
+public class ThrownInvalidPOJO
+{
+ // as a convention, the number of the thrown exception should never be 0, so we
+ // can identify when the number hasn't been set in ThrownAspect, and when it has
+
+ public void method1(int i) throws POJOException
+ {
+ throw new POJOException(i);
+ }
+
+ public void method2(int i) throws POJOException
+ {
+ throw new POJOException(i);
+ }
+
+ public void method3(int i) throws POJOException
+ {
+ throw new POJOException(i);
+ }
+
+ public void method4(int i) throws POJOException
+ {
+ throw new POJOException(i);
+ }
+
+ public void method5(int i) throws POJOException
+ {
+ throw new POJOException(i);
+ }
+
+ public void method6() throws POJOException { }
+
+ public void method7() throws POJOException
+ {
+ throw new POJOException(6);
+ }
+}
\ No newline at end of file
More information about the jboss-cvs-commits
mailing list