Advertisement
Guest User

Wicket 6 MyAppPageBuffer

a guest
Oct 8th, 2012
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.55 KB | None | 0 0
  1. package mywebapp;
  2.  
  3. import org.apache.wicket.Page;
  4. import org.apache.wicket.ThreadContext;
  5. import org.apache.wicket.core.request.handler.PageProvider;
  6. import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
  7. import org.apache.wicket.protocol.http.WebApplication;
  8. import org.apache.wicket.protocol.http.WebSession;
  9. import org.apache.wicket.protocol.http.mock.MockHttpServletRequest;
  10. import org.apache.wicket.protocol.http.mock.MockHttpServletResponse;
  11. import org.apache.wicket.protocol.http.mock.MockHttpSession;
  12. import org.apache.wicket.protocol.http.servlet.ServletWebRequest;
  13. import org.apache.wicket.protocol.http.servlet.ServletWebResponse;
  14. import org.apache.wicket.request.Url;
  15. import org.apache.wicket.request.cycle.RequestCycle;
  16. import org.apache.wicket.request.cycle.RequestCycleContext;
  17. import org.apache.wicket.request.handler.render.PageRenderer;
  18. import org.apache.wicket.request.mapper.parameter.PageParameters;
  19. import org.slf4j.Logger;
  20. import org.slf4j.LoggerFactory;
  21.  
  22. import javax.servlet.ServletContext;
  23. import java.util.ArrayList;
  24. import java.util.Arrays;
  25.  
  26.  
  27. /**
  28.  
  29.  */
  30. public class MyAppPageBuffer {
  31.  
  32.     private static final Logger LOGGER = LoggerFactory.getLogger(MyAppPageBuffer.class);
  33.  
  34.     private String buffer;
  35.  
  36.     WebApplication myApp;
  37.  
  38.  
  39.  
  40.  
  41.     public MyAppPageBuffer (WebApplication myApp) {
  42.         this.myApp = myApp;
  43.     }
  44.  
  45.  
  46.     public String getBuffer() {
  47.         return buffer;
  48.     }
  49.  
  50.     public boolean isEmpty() {
  51.         return buffer == null || buffer.isEmpty();
  52.     }
  53.  
  54.  
  55.  
  56.  
  57.  
  58.     public synchronized String renderPage() {
  59.         LOGGER.debug("RenderPagex init");
  60.  
  61.         ThreadContext.setApplication(null);
  62.         ThreadContext.setSession(null);
  63.         ThreadContext.setRequestCycle(null);
  64.        
  65.         // Context data
  66.         String contextPath = "";
  67.         String filterPath = "";
  68.        
  69.         // Url of page to render
  70.         Url url = new Url(Arrays.asList("mypage"), new ArrayList<Url.QueryParameter>());
  71.         String filterPrefix = contextPath + filterPath;
  72.  
  73.         WebApplication webApplication = isdefeWebApp;
  74.         ServletContext context = isdefeWebApp.getServletContext();
  75.  
  76.         // Page to reder
  77.         final Class<? extends Page> pageClass = MyPage.class;
  78.         PageParameters parameters = new PageParameters();
  79.  
  80.  
  81.         MockHttpSession servletSession = new MockHttpSession(context);
  82.         servletSession.setTemporary(true);
  83.  
  84.         MockHttpServletRequest mockServletRequest = new MockHttpServletRequest(isdefeWebApp, servletSession, context);
  85.         MockHttpServletResponse mockServletResponse = new MockHttpServletResponse(mockServletRequest);
  86.  
  87.         //initialize request and response
  88.         mockServletRequest.initialize();
  89.         mockServletResponse.initialize();
  90.  
  91.  
  92.         // Wicket servlet and response
  93.         ServletWebRequest webRequest = new ServletWebRequest(mockServletRequest, filterPrefix, url);
  94.         ServletWebResponse webResponse = new ServletWebResponse(webRequest, mockServletResponse);
  95.         WebSession webSession = new WebSession(webRequest);
  96.  
  97.         // Create request cycle
  98.         RequestCycleContext requestCycleContext = new RequestCycleContext(webRequest, webResponse, webApplication.getRootRequestMapper(), webApplication.getExceptionMapperProvider().get());
  99.  
  100.         RequestCycle requestCycle = new RequestCycle(requestCycleContext);
  101.  
  102.         // Se to thread
  103.         ThreadContext.setApplication(webApplication);
  104.         ThreadContext.setSession(webSession);
  105.         ThreadContext.setRequestCycle(requestCycle);
  106.  
  107.         final RenderPageRequestHandler handler = new RenderPageRequestHandler(new PageProvider(pageClass, parameters), RenderPageRequestHandler.RedirectPolicy.NEVER_REDIRECT);
  108.         final PageRenderer pageRenderer = webApplication.getPageRendererProvider().get(handler);
  109.  
  110.  
  111.         try {
  112.             requestCycle.scheduleRequestHandlerAfterCurrent(null);
  113.             requestCycle.getUrlRenderer().setBaseUrl(webRequest.getUrl());
  114.             pageRenderer.respond(requestCycle);
  115.             buffer = mockServletResponse.getDocument();
  116.         } catch (Exception e) {
  117.             buffer = null;
  118.             LOGGER.error("Error renderPage", e);
  119.         } finally {
  120.             requestCycle.detach();
  121.             ThreadContext.setApplication(null);
  122.             ThreadContext.setSession(null);
  123.             ThreadContext.setRequestCycle(null);
  124.         }
  125.         if (buffer != null && buffer.isEmpty()) buffer = null;
  126.         LOGGER.debug("RenderPage buffer " + (buffer!= null?(""+buffer.length()):"null"));
  127.         return buffer;
  128.     }
  129.  
  130.  
  131. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement