Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package mywebapp;
- import org.apache.wicket.Page;
- import org.apache.wicket.ThreadContext;
- import org.apache.wicket.core.request.handler.PageProvider;
- import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
- import org.apache.wicket.protocol.http.WebApplication;
- import org.apache.wicket.protocol.http.WebSession;
- import org.apache.wicket.protocol.http.mock.MockHttpServletRequest;
- import org.apache.wicket.protocol.http.mock.MockHttpServletResponse;
- import org.apache.wicket.protocol.http.mock.MockHttpSession;
- import org.apache.wicket.protocol.http.servlet.ServletWebRequest;
- import org.apache.wicket.protocol.http.servlet.ServletWebResponse;
- import org.apache.wicket.request.Url;
- import org.apache.wicket.request.cycle.RequestCycle;
- import org.apache.wicket.request.cycle.RequestCycleContext;
- import org.apache.wicket.request.handler.render.PageRenderer;
- import org.apache.wicket.request.mapper.parameter.PageParameters;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import javax.servlet.ServletContext;
- import java.util.ArrayList;
- import java.util.Arrays;
- /**
- */
- public class MyAppPageBuffer {
- private static final Logger LOGGER = LoggerFactory.getLogger(MyAppPageBuffer.class);
- private String buffer;
- WebApplication myApp;
- public MyAppPageBuffer (WebApplication myApp) {
- this.myApp = myApp;
- }
- public String getBuffer() {
- return buffer;
- }
- public boolean isEmpty() {
- return buffer == null || buffer.isEmpty();
- }
- public synchronized String renderPage() {
- LOGGER.debug("RenderPagex init");
- ThreadContext.setApplication(null);
- ThreadContext.setSession(null);
- ThreadContext.setRequestCycle(null);
- // Context data
- String contextPath = "";
- String filterPath = "";
- // Url of page to render
- Url url = new Url(Arrays.asList("mypage"), new ArrayList<Url.QueryParameter>());
- String filterPrefix = contextPath + filterPath;
- WebApplication webApplication = isdefeWebApp;
- ServletContext context = isdefeWebApp.getServletContext();
- // Page to reder
- final Class<? extends Page> pageClass = MyPage.class;
- PageParameters parameters = new PageParameters();
- MockHttpSession servletSession = new MockHttpSession(context);
- servletSession.setTemporary(true);
- MockHttpServletRequest mockServletRequest = new MockHttpServletRequest(isdefeWebApp, servletSession, context);
- MockHttpServletResponse mockServletResponse = new MockHttpServletResponse(mockServletRequest);
- //initialize request and response
- mockServletRequest.initialize();
- mockServletResponse.initialize();
- // Wicket servlet and response
- ServletWebRequest webRequest = new ServletWebRequest(mockServletRequest, filterPrefix, url);
- ServletWebResponse webResponse = new ServletWebResponse(webRequest, mockServletResponse);
- WebSession webSession = new WebSession(webRequest);
- // Create request cycle
- RequestCycleContext requestCycleContext = new RequestCycleContext(webRequest, webResponse, webApplication.getRootRequestMapper(), webApplication.getExceptionMapperProvider().get());
- RequestCycle requestCycle = new RequestCycle(requestCycleContext);
- // Se to thread
- ThreadContext.setApplication(webApplication);
- ThreadContext.setSession(webSession);
- ThreadContext.setRequestCycle(requestCycle);
- final RenderPageRequestHandler handler = new RenderPageRequestHandler(new PageProvider(pageClass, parameters), RenderPageRequestHandler.RedirectPolicy.NEVER_REDIRECT);
- final PageRenderer pageRenderer = webApplication.getPageRendererProvider().get(handler);
- try {
- requestCycle.scheduleRequestHandlerAfterCurrent(null);
- requestCycle.getUrlRenderer().setBaseUrl(webRequest.getUrl());
- pageRenderer.respond(requestCycle);
- buffer = mockServletResponse.getDocument();
- } catch (Exception e) {
- buffer = null;
- LOGGER.error("Error renderPage", e);
- } finally {
- requestCycle.detach();
- ThreadContext.setApplication(null);
- ThreadContext.setSession(null);
- ThreadContext.setRequestCycle(null);
- }
- if (buffer != null && buffer.isEmpty()) buffer = null;
- LOGGER.debug("RenderPage buffer " + (buffer!= null?(""+buffer.length()):"null"));
- return buffer;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement