String url;
public ExpiringCache(PortletTestCase seq)
{
//
seq.bindAction(0, UTP10.RENDER_JOIN_POINT, new PortletRenderTestAction()
{
protected Response run(Portlet portlet, RenderRequest request, RenderResponse response, PortletTestContext context) throws IOException, PortletException
{
// Content is not cached
calls.add("0");
// Refresh
url = response.createRenderURL().toString();
return new InvokeGetResponse(url);
}
});
//
seq.bindAction(1, UTP10.RENDER_JOIN_POINT, new PortletRenderTestAction()
{
protected Response run(Portlet portlet, RenderRequest request, RenderResponse response, PortletTestContext context) throws IOException, PortletException
{
// Should not be called
calls.add("1");
return null;
}
});
seq.bindAction(1, UTP11.RENDER_JOIN_POINT, new PortletRenderTestAction()
{
protected Response run(Portlet portlet, RenderRequest request, RenderResponse response, PortletTestContext context) throws IOException, PortletException
{
// Refresh
return new InvokeGetResponse(url);
}
});
//
seq.bindAction(2, UTP10.RENDER_JOIN_POINT, new PortletRenderTestAction()
{
protected Response run(Portlet portlet, RenderRequest request, RenderResponse response, PortletTestContext context) throws IOException, PortletException
{
// Could be called depending on whether the portal
// decides to invoke UTP2 or UTP3 first
// so if it's called we need to disable cache otherwise the next
// render will probably not be called
response.setProperty(RenderResponse.EXPIRATION_CACHE, "0");
return null;
}
});
seq.bindAction(2, UTP11.RENDER_JOIN_POINT, new PortletRenderTestAction()
{
protected Response run(Portlet portlet, RenderRequest request, RenderResponse response, PortletTestContext context) throws IOException, PortletException
{
try
{
assertFalse(calls.contains("1"));
// Wait 5 seconds for the cache entry to be invalid
Thread.sleep(5 * 1000);
// Refresh
return new InvokeGetResponse(url);
}
catch (InterruptedException e)
{
return new FailureResponse(Failure.createFailure(e));
}
}
});
//
seq.bindAction(3, UTP10.RENDER_JOIN_POINT, new PortletRenderTestAction()
{
protected Response run(Portlet portlet, RenderRequest request, RenderResponse response, PortletTestContext context) throws IOException, PortletException
{
// Should be called
calls.add("3");
// Invoke the same but with different render parameter
PortletURL tmp = response.createRenderURL();
tmp.setParameter("abc", "def");
url = tmp.toString();
return new InvokeGetResponse(url);
}
});
//
seq.bindAction(4, UTP10.RENDER_JOIN_POINT, new PortletRenderTestAction()
{
protected Response run(Portlet portlet, RenderRequest request, RenderResponse response, PortletTestContext context) throws IOException, PortletException
{
// Should be called
calls.add("4");
// Refresh
return new InvokeGetResponse(url);
}
});
//
seq.bindAction(5, UTP10.RENDER_JOIN_POINT, new PortletRenderTestAction()
{
protected Response run(Portlet portlet, RenderRequest request, RenderResponse response, PortletTestContext context) throws IOException, PortletException
{
// Should not be called
calls.add("5");
return null;
}
});
seq.bindAction(5, UTP11.RENDER_JOIN_POINT, new PortletRenderTestAction()
{
protected Response run(Portlet portlet, RenderRequest request, RenderResponse response, PortletTestContext context) throws IOException, PortletException
{
// Refresh
return new InvokeGetResponse(url);
}
});
//
seq.bindAction(6, UTP10.RENDER_JOIN_POINT, new PortletRenderTestAction()
{
protected Response run(Portlet portlet, RenderRequest request, RenderResponse response, PortletTestContext context) throws IOException, PortletException
{
// Could be called depending on whether the portal
// decides to invoke UTP2 or UTP3 first
// so if it's called we need to disable cache otherwise the next
// render will probably not be called
response.setProperty(RenderResponse.EXPIRATION_CACHE, "0");
return null;
}
});
seq.bindAction(6, UTP11.RENDER_JOIN_POINT, new PortletRenderTestAction()
{
protected Response run(Portlet portlet, RenderRequest request, RenderResponse response, PortletTestContext context) throws IOException, PortletException
{
try
{
assertFalse(calls.contains("5"));
// Wait 5 seconds for the cache entry to be invalid
Thread.sleep(5 * 1000);
// Refresh
return new InvokeGetResponse(url);
}
catch (InterruptedException e)
{
return new FailureResponse(Failure.createFailure(e));
}
}
});
//
seq.bindAction(7, UTP10.RENDER_JOIN_POINT, new PortletRenderTestAction()
{
protected Response run(Portlet portlet, RenderRequest request, RenderResponse response, PortletTestContext context) throws IOException, PortletException
{
// Should be called
calls.add("7");