use of org.apache.wicket.request.cycle.RequestCycle in project wicket by apache.
the class ServletWebResponseTest method encodeAbsoluteUrl.
/**
* WICKET-5582 absolute URLs stay absolute after encoding
*/
@Test
public void encodeAbsoluteUrl() {
final String url = "http://localhost:8080/path";
ServletWebRequest webRequest = mock(ServletWebRequest.class);
when(webRequest.isAjax()).thenReturn(Boolean.FALSE);
Url baseUrl = Url.parse("./baseUrl");
baseUrl.setProtocol("http");
baseUrl.setHost("someHost");
baseUrl.setPort(80);
when(webRequest.getClientUrl()).thenReturn(baseUrl);
UrlRenderer renderer = new UrlRenderer(webRequest);
RequestCycle requestCycle = mock(RequestCycle.class);
ThreadContext.setRequestCycle(requestCycle);
when(requestCycle.getUrlRenderer()).thenReturn(renderer);
HttpServletResponse httpServletResponse = mock(HttpServletResponse.class);
when(httpServletResponse.encodeURL(Matchers.eq(url))).thenReturn(url + ";foo");
ServletWebResponse webResponse = new ServletWebResponse(webRequest, httpServletResponse);
assertEquals(url + ";foo", webResponse.encodeURL(url));
}
use of org.apache.wicket.request.cycle.RequestCycle in project wicket by apache.
the class QueryStringWithVersionResourceCachingStrategyTest method testDecorateResponse.
@Test
public void testDecorateResponse() throws Exception {
Duration defaultDuration = Duration.minutes(60);
// setup RequestCycle
BaseWicketTester tester = new BaseWicketTester();
RequestCycle requestCycle = ThreadContext.getRequestCycle();
Application.get().getResourceSettings().setDefaultCacheDuration(defaultDuration);
try {
// version match
requestCycle.setMetaData(IResourceCachingStrategy.URL_VERSION, TEST_RESOURCE_VERSION);
AbstractResource.ResourceResponse response = new AbstractResource.ResourceResponse();
strategy.decorateResponse(response, new TestResource());
assertEquals(WebResponse.MAX_CACHE_DURATION, response.getCacheDuration());
assertEquals(WebResponse.CacheScope.PUBLIC, response.getCacheScope());
// version mismatch
requestCycle.setMetaData(IResourceCachingStrategy.URL_VERSION, "foo");
response = new AbstractResource.ResourceResponse();
strategy.decorateResponse(response, new TestResource());
assertEquals(defaultDuration, response.getCacheDuration());
assertEquals(WebResponse.CacheScope.PRIVATE, response.getCacheScope());
} finally {
tester.destroy();
}
}
use of org.apache.wicket.request.cycle.RequestCycle in project wicket by apache.
the class PushHeaderItem method push.
/**
* Creates a URL and pushes the resource to the client - this is only supported if http2 is
* enabled
*
* @param pushItems
* a list of items to be pushed to the client
* @return the current push header item
*/
@SuppressWarnings("unchecked")
public PushHeaderItem push(List<PushItem> pushItems) {
RequestCycle requestCycle = RequestCycle.get();
if (isHttp2(getContainerRequest(requestCycle.getRequest())))
for (PushItem pushItem : pushItems) {
Object object = pushItem.getObject();
PageParameters parameters = pushItem.getPageParameters();
if (object == null) {
throw new WicketRuntimeException("Please provide an object to the items to be pushed, so that the url can be created for the given resource.");
}
CharSequence url = null;
if (object instanceof ResourceReference) {
url = requestCycle.urlFor((ResourceReference) object, parameters);
} else if (Page.class.isAssignableFrom(object.getClass())) {
url = requestCycle.urlFor((Class<? extends Page>) object, parameters);
} else if (object instanceof IRequestHandler) {
url = requestCycle.urlFor((IRequestHandler) object);
} else if (pushItem.getUrl() != null) {
url = pushItem.getUrl();
} else {
Url encoded = new PageParametersEncoder().encodePageParameters(parameters);
String queryString = encoded.getQueryString();
url = object.toString() + (queryString != null ? "?" + queryString : "");
}
if (url.toString().equals(".")) {
url = "/";
} else if (url.toString().startsWith(".")) {
url = url.toString().substring(1);
}
// The context path and the filter have to be applied to the URL, because otherwise
// the resource is not pushed correctly
StringBuilder partialUrl = new StringBuilder();
String contextPath = WebApplication.get().getServletContext().getContextPath();
partialUrl.append(contextPath);
if (!"/".equals(contextPath)) {
partialUrl.append('/');
}
String filterPath = WebApplication.get().getWicketFilter().getFilterPath();
if ("/".equals(filterPath)) {
filterPath = "";
} else if (filterPath.endsWith("/")) {
filterPath = filterPath.substring(0, filterPath.length() - 1);
}
partialUrl.append(filterPath);
partialUrl.append(url.toString());
// Set the url the resource is going to be pushed with
pushItem.setUrl(partialUrl.toString());
// Apply the push item to be used during the push process
this.pushItems.add(pushItem);
}
return this;
}
use of org.apache.wicket.request.cycle.RequestCycle in project wicket-orientdb by OrienteerBAP.
the class OrientDefaultExceptionsHandlingListener method extractCurrentPage.
private Page extractCurrentPage(boolean fullSearch) {
final RequestCycle requestCycle = RequestCycle.get();
IRequestHandler handler = requestCycle.getActiveRequestHandler();
if (handler == null) {
handler = requestCycle.getRequestHandlerScheduledAfterCurrent();
if (handler == null && fullSearch) {
handler = OrientDbWebApplication.get().getRootRequestMapper().mapRequest(requestCycle.getRequest());
}
}
if (handler instanceof IPageRequestHandler) {
IPageRequestHandler pageRequestHandler = (IPageRequestHandler) handler;
return (Page) pageRequestHandler.getPage();
}
return null;
}
use of org.apache.wicket.request.cycle.RequestCycle in project openmeetings by apache.
the class ApplicationHelper method ensureApplication.
public static IApplication ensureApplication(Long langId) {
IApplication a = ensureApplication();
if (ThreadContext.getRequestCycle() == null) {
ServletWebRequest req = new ServletWebRequest(new MockHttpServletRequest((Application) a, new MockHttpSession(a.getServletContext()), a.getServletContext()), "");
RequestCycleContext rctx = new RequestCycleContext(req, new MockWebResponse(), a.getRootRequestMapper(), a.getExceptionMapperProvider().get());
ThreadContext.setRequestCycle(new RequestCycle(rctx));
}
if (ThreadContext.getSession() == null) {
WebSession s = WebSession.get();
if (langId > 0) {
((IWebSession) s).setLanguage(langId);
}
}
return a;
}
Aggregations