posted 11 years ago
Hi,
I need some help to get my AOP implementation working. I just want to execute a piece of code before invokation of a method.
Here is the code snippet.
<!-- Advice -->
<bean id="urlTamperingDetectorAdvice" class="com.fun.org.msg.util.UrlTampringDetector" />
<!-- Advisor -->
<bean id="urlTamperingAdvisor" class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor">
<property name="mappedNames" value="getRequestBody" />
<property name="advice" ref="urlTamperingDetectorAdvice" />
</bean>
<!-- Proxy -->
<bean id="fun.org.msg.TaskAProxy" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="target">
<bean class="com.fun.org.msg.requester.WebServiceRequesterTaskA" parent="fun.org.msg.WebServiceRequester">
<property name="suffix" value="/approve" />
<property name="fieldUnpackers">
<list>
<ref bean="fun.org.TaskUnpacker" />
</list>
</property>
</bean>
</property>
<property name="interceptorNames">
<list>
<value>urlTamperingAdvisor</value>
</list>
</property>
</bean>
The class for Advice
public class UrlTampringDetector implements MethodInterceptor
{
public Object invoke(MethodInvocation methodInvocation) throws Throwable
{
ValidateUrl();// some logic here
return methodInvocation.proceed();
}
}
Now how I am expecting this to called
We have some handlers for different kind of activities, that later executes a list of tasks. e.g.
<bean id="myTask..processor.TaskHandler" class="com.myTask.processor.handler.impl.RequestMessageHandlerImpl">
<property name="taskProcessors">
<list>
<ref bean="myTask.FlagInComingParametersTask" />
<ref bean="myTask.SetLocaleSpecificPropertiesTask" />
<ref bean="myTask.Host_Generic_Task" />
</list>
</property>
</bean>
<bean id="myTask.Host_Generic_Task" class="fun.org.msg.HostMappedTaskList">
<property name="taskMap">
<map>
<entry key="hostType1">
<list>
<ref bean="fun.org.msg.TaskAProxy" />
</list>
</entry>
</map>
</property>
</bean>
In fun.org.msg.HostMappedTaskList, it is calling a method of the WebServiceRequesterTaskA class.
In my scenario the method of target class is being executed but my proxy's method is not being executed. I dont know what I am doing wrong.