Okay, here is the best I can do for a test case. I'm trying to intercept calls to the getTotals() method of a bean class named Report. Specifically, I'm trying to intercept calls to the getTotals() method.
Code:
package com.whatever;
public class Report implements Serializable {
private Map<Integer, Integer[]> totals;
public Report();
public Map<Integer, Integer[]> getTotals() {
return this.totals;
// etc, etc
}
Here is the current version of my applicationContext.xml file (relevant portions only):
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="byName">
<bean id="reportTarget" class="com.whatever.Report" />
<bean id="report" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="target">
<ref local="reportTarget" />
</property>
<property name="interceptorNames">
<list>
<value>reportAdvisor</value>
</list>
</property>
</bean>
<bean id="reportAdvisor" class=class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
<property name="advice">
<ref local="reportAdvice" />
</property>
<property name="pattern">
<value>getTotals</value>
</property>
</bean>
<!-- Bean requires datasource to be injected -->
<bean id="reportAdvice" class="com.whatever.ReportAdvice">
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>
</bean>
</beans>
Finally, a simple advice class:
Code:
package com.whatever;
// imports, spring AOP and commons logging
public class ReportAdvice implements MethodInterceptor {
private Log log = LogFactory.getLog(ReportAdvice.class);
public Object invoke(MethodInvocation methodInvocation) throws Throwable {
log.debug("invoke() method invoked!");
// probably uneccessary using the regexp pointcut
if (!methodInvocation.getMethod().getName().equals("getTotals")) {
return methodInvocation.proceed();
}
// further code, make sure to return the right type
}
}
As I mentioned before, I'm completely stumped why the method interceptor isn't being triggered.