package org.jboss.seam.wicket.ioc;
import org.jboss.seam.annotations.RaiseEvent;
import org.jboss.seam.core.Events;
public class EventInterceptor<T> implements StatelessInterceptor<T>
{
public Object afterInvoke(InvocationContext<T> invocationContext, Object result)
{
if ( result!=null || invocationContext.getConstructor() != null || (invocationContext.getMethod() != null && invocationContext.getMethod().getReturnType().equals(void.class)) )
{
if ( invocationContext.getAccessibleObject().isAnnotationPresent(RaiseEvent.class) )
{
String[] types = invocationContext.getAccessibleObject().getAnnotation(RaiseEvent.class).value();
if ( types.length==0 )
{
Events.instance().raiseEvent( invocationContext.getMember().getName() );
}
else
{
for (String type: types )
{
Events.instance().raiseEvent(type);
}
}
}
}
return result;
}
public void beforeInvoke(InvocationContext<T> invocationContext)
{
}
public Exception handleException(InvocationContext<T> invocationContext, Exception exception)
{
return exception;
}
}