Lifecycle.setPhaseId(PhaseId.INVOKE_APPLICATION);
Lifecycle.beginRequest(externalContext);
Manager.instance().setCurrentConversationId("1");
Lifecycle.resumeConversation(externalContext);
ValidationInterceptor vi = new ValidationInterceptor();
vi.setComponent( new Component(Foo.class, appContext) );
final Foo foo = new Foo();
String result = (String) vi.aroundInvoke( new MockInvocationContext() {
@Override
public Method getMethod()
{
return InterceptorTest.getMethod("foo");
}
@Override
public Object getTarget()
{
return foo;
}
@Override
public Object proceed() throws Exception
{
return foo.foo();
}
});
assert "foo".equals(result);
FacesMessages.afterPhase();
FacesMessages.instance().beforeRenderResponse();
assert !FacesContext.getCurrentInstance().getMessages().hasNext();
result = (String) vi.aroundInvoke( new MockInvocationContext() {
@Override
public Method getMethod()
{
return InterceptorTest.getMethod("bar");
}
@Override
public Object getTarget()
{
return foo;
}
@Override
public Object proceed() throws Exception
{
assert false;
return foo.bar();
}
});
assert "baz".equals(result);
FacesMessages.afterPhase();
FacesMessages.instance().beforeRenderResponse();
assert FacesContext.getCurrentInstance().getMessages().hasNext();
foo.setValue("not null");
result = (String) vi.aroundInvoke( new MockInvocationContext() {
@Override
public Method getMethod()
{
return InterceptorTest.getMethod("bar");
}